Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Как скачать большие файлы ? (http://forum.oszone.net/showthread.php?t=349116)

Painkiller 30-06-2021 15:45 2961197

Как скачать большие файлы ?
 
День добрый! Нужно скачать файл большого размера , от 2 и более гб ! Перепробовал много вариантов из интернета и не один не работает .
Вот пример
Код:

uses
 Wininet

function GetInetFile(const fileURL, FileName: String; Progress: TProgressBar): boolean;
const BufferSize = 1024;
var
  hSession, hURL: HInternet;
  Buffer: array[1..BufferSize] of Byte;
  DataSize,BufferLen: DWORD;
  Stream:TMemoryStream;
begin
  Result:=False;
  hSession := InternetOpen(PChar(ExtractFileName(Application.ExeName)), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    hURL := InternetOpenURL(hSession, PChar(fileURL),nil,0,0,0);
    try
      DataSize:= 0;
      BufferLen:= sizeof(DataSize);
      if HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH or HTTP_QUERY_FLAG_NUMBER,
        @DataSize,BufferLen,PDWORD(nil)^) then
        begin
          Progress.Max:=DataSize;
          Progress.Position:=Progress.Min;
        end;
      Stream:=TMemoryStream.Create;
      try
        repeat
          InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
          Stream.WriteBuffer(Buffer, BufferLen);
          Progress.StepBy(BufferLen);
          Application.ProcessMessages;
        until BufferLen = 0;
        Stream.SaveToFile(FileName);
        Result:=True;
      finally
        Stream.Free;
      end;
    finally
      InternetCloseHandle(hURL);
      Progress.Position:= SizeOf(Buffer);
    end;
  finally
    InternetCloseHandle(hSession);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if GetInetFile('http://a0555996.xsph.ru/activation/ru_windows_7_ultimate_with_sp1_x64_dvd_u_677391.iso', 'H:\ru_windows_7_ultimate_with_sp1_x64_dvd_u_677391.iso', ProgressBar1) then
    ShowMessage('Скачка завершена');
end;

end.

и тоже не работает =(
Помогите примером, кто ?

Painkiller 30-06-2021 21:53 2961219

Вопрос закрыт! Задачу решил как всегда сам

lxa85 05-07-2021 16:05 2961478

Цитата:

Цитата Painkiller
Задачу решил как всегда сам »

Это хорошо.
А как? :)

Grabber2006 11-08-2021 03:16 2964003

DataSize и BufferLen надо было объявить int64.

А вообще если iso не знаю, но на exe (например, самораспаковывающийся архив) антивирус будет орать trojan-downloader.


Время: 23:42.

Время: 23:42.
© OSzone.net 2001-