Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с UrlDownloadToFile 
:(
    Опции темы
urisan
Дата 7.12.2005, 12:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Приветствую!
Подскажите, пожалуйста, такой вопрос. В проге скачиваю несколько файлов (около 20 шт.), ссылка к каждому имеет вид http://www.moi_sait.ru/GetReportsServlet?file=moi_fail.xxx.
Использую функцию UrlDownloadToFile. Закачка происходит в цикле. Проблема в том, что от каждого файла сохраняется только около 25 килобайт, т.е. каждый файл сохраняется только частично!!! smile Никак не пойму в чем дело. Есть подозрение, что функция просто не успевает скачивать первый файл, а уже происходит вызов ее на скачку второго, она первый бросает и начинает качать второй, и так далее... поэтому ниче и не успевает. Помогите разобраться!
P.S. пробовал использовать функцию InternetReadFile, но постоянно выдается ошибка I/O Error 1784. В MSDN написано, что неверный буфер. Тоже не пойму в чем проблема. Код взял из этого форума, буфер определен так: Buffer: array[0..1024] of char; BytesRead: cardinal; Тоже не пойму, в чем беда!
В общем, буду очень благодарен за любые советы!
Спасибо!
  Вверх
Snowy
Дата 7.12.2005, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Может подойдет этот вариант:
http://forum.vingrad.ru/index.php?showtopic=48563
PM MAIL   Вверх
urisan
Дата 7.12.2005, 14:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Snowy
та же ерунда! IdHTTP тоже качает первые 25 Кб, а потом вообще вываливается! smile
В WinInet с буфером разобрался. Теперь другая проблема: в коде
Код

  sAppName:=ExtractFileName(Application.ExeName);
   hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PROXY, nil, nil, 0);
   //И наш УРЛ
   hURL := InternetOpenURL(hSession,PChar(Url),nil, 0, 0, 0);


hUrl после функции InternetOpenURL равен nil, выдает ошибку, что не может подключиться....
Ниче не пойму smile
  Вверх
Snowy
Дата 7.12.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(urisan @ 7.12.2005, 14:50)
та же ерунда! IdHTTP тоже качает первые 25 Кб, а потом вообще вываливается!

Значит что-то у тебя не так.
Этот код полностью рабочий и проверенный.
PM MAIL   Вверх
RA
Дата 7.12.2005, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 10
Всего: 115



Цитата(urisan @ 7.12.2005, 12:41)
сохраняется только около 25 килобайт


Наверно нужно адрес форматировать прежде чем скачивать по нему.

переименую скаченный тобой 25 килобайтовый фаил в xxx.html и запусти, если там html страница то это то очём я говорил.
PM   Вверх
urisan
Дата 8.12.2005, 08:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











RAdmin
попробовал - точно, файлы по 25 кб - это html страницы. На них написано, что файл, который мне нужен, недоступен....
Объясни, плиз, поподробнее, что значит форматировать адрес?
Спасибо!
  Вверх
RA
Дата 8.12.2005, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 10
Всего: 115



Сложно объяснить smile .

Дай мне ссылку на то что пытаешься скачать, попробую наглядным способом объяснить.
PM   Вверх
Guest
Дата 9.12.2005, 14:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Почему ей не быть?
Цитата

hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PROXY, nil, nil, 0);

Ты пытаешься направить соединение через прокси, а адрес прокси не указываешь...
  Вверх
bartram
Дата 13.12.2005, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 1
Всего: 29



Вот рабочий код:
Код

program Downloader;

uses
  Windows, WinInet;

var
 hInternet: pointer;
 hFile: pointer;
 DataBuff: pointer;
 Size, Bytes: dword;
 hOut: dword;

begin
  hInternet := InternetOpen(nil, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  hFile := InternetOpenUrl(hInternet, 'http://www.microsoft.com/file.jpg', nil, 0, 
INTERNET_FLAG_EXISTING_CONNECT, 0);
  if hFile <> nil then
   begin
    InternetQueryDataAvailable(hFile, Size, 0, 0);
    GetMem(DataBuff, Size);
    InternetReadFile(hFile, DataBuff, Size, Bytes);
    hOut := CreateFile('c:\image.jpg', GENERIC_WRITE, 0, nil, CREATE_NEW, 0, 0);
    if hOut <> INVALID_HANDLE_VALUE then
     begin
      WriteFile(hOut, DataBuff^, Size, Bytes, nil);
      CloseHandle(hOut);
     end;
    FreeMem(DataBuff);
    InternetCloseHandle(hFile);
   end;
  InternetCloseHandle(hInternet);                       
end.




--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.