Архив исходников программ, модулей и компонентов на Delphi


Начальная страница

Поиск по базе



Операционная система
Настройка приложения
Взаимодействия приложений
Файлы и директории
Строки и символы
Математика
Базы данных
Интернет и сеть
Мультимедиа
Аппаратная часть
VCL
Другие разделы [0]
 

Количество записей в базе - 537
Сегодня добавлено – 0

Другое (Интернет и сеть)



Вернуться к списку функций
 Скачивание файла из интернета не используя TWebBrowser

 Прислал: markers (Новосибирск) ( 27 января 2009 г. )
©  Автор неизвестен
 Описание:
Данная функция принимает:
url = ссылка для скачивания
filename = имя файла в которое нужно сохранить
Если всё срастётся, процедура сохранит файл по ссылке в url в путь/имя_файла указанные в filename.

 Зависимости:
WInInet

 Ограничения:
тестировалось Delphi 7 / WinXP

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Скачивание файла из интернета не используя TWebBrowser

Данная функция принимает:
url = ссылка для скачивания
filename = имя файла в которое нужно сохранить
Если всё срастётся, процедура сохранит файл по ссылке в url в путь/имя_файла указанные в filename.

Зависимости: WInInet
Автор:       markers, markers@mail333.com, ICQ:118297, Новосибирск
Copyright:   Автор неизвестен
Дата:        27 января 2009 г.
***************************************************************** }

procedure HttpGetFile(url,filename:string);
var
  F:File; // Переменная открытого файла
  ResumePos,BufferLen,SumSize:DWORD; // Переменные позиция и итогового размера
  hSession, hURL: HInternet;
  Buffer: array[1..1024] of Byte; // Буфер
  err: boolean;
begin
  SumSize:=0;ResumePos:=0; // Обнуляем

  AssignFile(F,filename);
  IF FileExists(filename) then // проверим существует ли файл
  begin // Существует, докачаем
    Reset(f,1); // сброс позиции
    ResumePos:=FileSize(F); // установим позицию на котором остановилось скачивание в прошлый раз
    Seek(F,FileSize(F)); // Переходим на эту позицию
  end else ReWrite(f,1); // Если файла несуществуем, начинаем качать с начала

  hSession:=InternetOpen('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT)',0,nil,nil,0); // Открываем соединение, указываем кем будем прикидыватся
  hURL:=InternetOpenURL(hSession,PChar(url),nil,0,0,0); // Открываем ИРЛ
  InternetQueryDataAvailable(hURL, SumSize,0,0); // Получаем данные
  label4.Caption:=IntToStr(SumSize); // на Label4 показываем размер файла (ВНИМАНИЕ!!! большой размер показывается неверно!!!)
  if ResumePos>0 then InternetSetFilePointer(hURL,ResumePos,nil,0,0); // Если недокачен, начинаем качать с места где остановились в прошлый раз

  repeat // Цикл
   err:=InternetReadFile(hURL, @Buffer,SizeOf(Buffer),BufferLen); // читаем блок данных
   if err=false then begin ShowMessage('Error');exit;end; // Если произошла ошибка, информируем и выходим из процедуры
   BlockWrite(f,Buffer,BufferLen); // Записываем блок данных в файл
   Application.Processmessages; // чтоб во время скачки, прога не "висла"
  until (BufferLen=0); // крутим пока буфер не будет нулевым, а следовательно файл скачан
end;

 Пример использования:
HttpGetFile('http://imgl.yandex.net/i/www/logo1.png', 'c:\yalogo.png');
// Получим на диске C файл yalogo.png открыв который мы увидем логотип Яндекса :)


Вернуться к списку функций

Наверх ▲