|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Скачать файл по URL в среде .NET
Нужна помощь!
Перечитал все компоненты 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. |