Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

wininet и загрузка изображения gif

47K
08 марта 2011 года
Стрелок
21 / / 16.01.2010
Здравствуйте.
Мне необходимо сохранить в файл изображение gif из интернета. Текст страницы сохраняется, а вот с картинкой проблемы.
Привожу свой код:
Код:
HINTERNET hInternet = InternetOpen(
            TEXT("Opera/8.50 (Windows NT 5.1; U; ru)"),
            INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);

    if (hInternet != NULL)
    {
       
        HINTERNET hRequest = InternetOpenUrl(hInternet,
            _T("http://www.freedom-vrn.ru/images/weather/nt_clear.gif")
            , NULL, 0, 0, 0);

        if(hRequest)
        {
            TCHAR path[MAX_PATH + 1];
            GetCurrentDirectory(MAX_PATH, path);
            wcscat(path,_T("\\res\\image.gif"));
            DWORD dwRead;
            unsigned char szTemp[1024];
            std::ofstream image_file;
            image_file.open(path, std::ios::binary);
//понятия не имею, как сохранить изображение, поэтому написал так, что, естесственно, не правильно
            while (InternetReadFile(hRequest, (LPVOID)szTemp, 1024, &dwRead))
            {
                if (!dwRead) break;
                image_file<<szTemp;
            }
            InternetCloseHandle(hRequest);
        }
        InternetCloseHandle(hInternet);
    }

Заранее благодарю за помощь
8.2K
20 марта 2011 года
user1
71 / / 16.03.2007
WinInet ? Zachem ?

Для этой цели вполне подойдет функция UrlDownloadToFile(). Конечно, вы можете использовать
любой другой способ загрузки файла, например, поискав его в кэше IE. Но мои эксперименты
с функцией GetUrlCacheEntryInfo не привели к надежному результату. Примерно, для половины
рисунков возвращалась ошибка, хотя реально файлы во временном каталоге присутствовали. Кто
знает в чем дело, пожалуйста, поделитесь. UrlDownloadToFile в этом смысле работает надежнее,
к тому же, самостоятельно использует кэш. Кроме этого, реализовав callback интерфейс
IBindStatusCallback можно непосредственно следить за процессом загрузки. Итак, файлы рисунков сохраняются,
осталось перед сохранением текста поменять атрибут src всех тэгов <IMG>, указавав URL наших файлов.
Все, теперь можно сохранить и текст.

HRESULT URLDownloadToFile( LPUNKNOWN pCaller,
LPCTSTR szURL, LPCTSTR szFileName, DWORD dwReserved, LPBINDSTATUSCALLBACK lpfnCB);

Iz urlmon.dll funkciya, a ne wininet.dll
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог