Използвам този код за изтегляне на малки файлове:
Var
ms:TMemoryStream;
begin
ms:=TMemoryStream.Create;
Idhttp1.get('http://mydomain.com/myfile.zip',ms);
ms.SaveToFile('myfile.zip');
ms.Free;
end;
Но файлът се записва в RAM преди да бъде съхранен на диск, така че може да е трудно да изтеглите файлове >1Gb например. Има ли начин да изтеглите файл по части? Или трябва да използвам 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