![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Нужна помощь!
Перечитал все компоненты VCL, но они не работают к сожалению в Framework, поэтому задам основу вопроса: как, с помощью каких компонентов, пример исходного кода, закачать файл в fs: FileStream c URL "http:\\server.net\1.png"? |
|
#2
|
|||
|
|||
|
Код:
uses WinInet;
function TWinForm2.GetInetFile (const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: Cardinal;
f: FileStream;
sAppName: String;
begin
Result:=False;
sAppName := ExtractFileName(Application.ExecutablePath);
hSession:=InternetOpen(sAppName, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
hURL := InternetOpenURL(hSession, fileURL, nil, 0, 0, 0);
try
f:=FileStream.Create(t2.Text,FileMode.CreateNew,FileAccess.Write);
repeat
InternetReadFile(hURL, Buffer, SizeOf(Buffer), BufferLen);
f.Write(Buffer,0,BufferLen);
until BufferLen = 0;
MessageBox.Show(f.Length.ToString+' байтов');
f.Close;
Result:=True;
finally
InternetCloseHandle(hURL)
end
finally
InternetCloseHandle(hSession)
end
end;Последний раз редактировалось Admin, 20.08.2008 в 18:17. |
|
#3
|
|||
|
|||
|
Фрагмент из моей проги
Код:
uses WinInet, ...
var fileURL: string; FileName: String;
const BufferSize = 1024;
var
hSession, hURL,db: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: Cardinal;
fs: FileStream;
sAppName: String;
function DownLoad.DownloadNow (const fileURL, FileName: String): boolean;
var l: int64;
head:String;
FileSize: string;
dwBufferLen, dwIndex: Cardinal;
i: integer;
begin
Result:=False;
hSession:=InternetOpen(sAppName, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
hURL := InternetOpenURL(hSession, fileURL, nil, 0, 0, 0);
try
fs:=FileStream.Create(FileName,FileMode.CreateNew,FileAccess.Write);
repeat
InternetReadFile(hURL, Buffer, SizeOf(Buffer), BufferLen);
end;
fs.Write(Buffer,0,BufferLen);
until BufferLen = 0;
fs.Close;
Result:=True;
finally
InternetCloseHandle(hURL)
end
finally
InternetCloseHandle(hSession)
end;
end;Последний раз редактировалось Admin, 10.09.2008 в 20:57. |