注意: 此代碼在Delphi XE2中。Delphi - 使用Wininet下載文件?
我試圖下載文件而不使用UrlMon.dll。
我只想用wininet。這是我到目前爲止:
uses Windows, Wininet;
procedure DownloadFile(URL:String;Path:String);
Var
InetHandle:Pointer;
URLHandle:Pointer;
FileHandle:Cardinal;
ReadNext:Cardinal;
DownloadBuffer:Pointer;
BytesWritten:Cardinal;
begin
InetHandle := InternetOpen(PWideChar(URL),0,0,0,0);
URLHandle := InternetOpenUrl(InetHandle,PWideChar(URL),0,0,0,0);
FileHandle := CreateFile(PWideChar(Path),GENERIC_WRITE,FILE_SHARE_WRITE,0,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,0);
Repeat
InternetReadFile(URLHandle,DownloadBuffer,1024,ReadNext);
WriteFile(FileHandle,DownloadBuffer,ReadNext,BytesWritten,0);
Until ReadNext = 0;
CloseHandle(FileHandle);
InternetCloseHandle(URLHandle);
InternetCloseHandle(InetHandle);
end;
我認爲問題是與我的循環和「ReadNext」。當執行此代碼時,它會以正確的路徑創建文件,但代碼完成並且文件爲0字節。
你要當ReadNext <1024 BTW一個更好的名字停止該變量是BytesRead。 – jachguate
沒有改變。我甚至在InternetReadFile顯示ReadNext變量或「BytesRead」後顯示一個MessageBox,它顯示0. –
請注意,WinInet已過時!!!!!!!!!!您可能想要使用WinHTTP:http://blog.synopse.info/post/2011/07/04/WinINet-vs-WinHTTP – Ampere