Я использую этот код для загрузки небольших файлов:
Var
ms:TMemoryStream;
begin
ms:=TMemoryStream.Create;
Idhttp1.get('http://mydomain.com/myfile.zip',ms);
ms.SaveToFile('myfile.zip');
ms.Free;
end;
Но файл сохраняется в ОЗУ перед сохранением на диск, поэтому, например, может быть сложно загрузить файлы > 1 Гб. Есть ли способ скачать файл по частям? Или мне нужно использовать WinInet? Заранее спасибо!
TFileStream
вместоTMemoryStream
, что приведет к записи на диск непосредственно при загрузке файла.IdHTTP.Get
просто запрашиваетTStream
, что означает, что вы можете предоставить ему любой тип потока. - person Ken White   schedule 13.03.2013TMemoryStream
наTFileStream
. И в любом случае, не забудьте обеспечить выпуск потока с помощью блокаtry..finally
. Ваш код может быть окончательно изменен наsomething like this
. - person TLama   schedule 13.03.2013