筆者最近開發的系統中需要寫一個下載文件的功能
以前用BCB調用API寫的很煩瑣
忽然想起有一個API就可以搞定了
於是一大早就來搜索
這個API就是UrlDownloadToFile
不僅如此
Delphi的一些控件也可以輕松實現下載
如NMHTTP
指定NMHTTP
InputFileMode := ture; 指定Body為本地文件名
指定Get就可以下載了
下面是詳細代碼
均出自CSDN
我把它們都整理到這兒
讓大家方便查閱
uses UrlMon;
function DownloadFile(Source Dest: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil PChar(source) PChar(Dest) nil) = ;
except
Result := False;
end;
end;
if DownloadFile(http://wwwborlandcom/delphizip c:\kylixzip) then
ShowMessage(Download succesful)
else ShowMessage(Download unsuccesful)
例程
Uses URLMon ShellApi;
function DownloadFile(SourceFile DestFile: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil PChar(SourceFile) PChar(DestFile) nil) = ;
except
Result := False;
end;
end;
procedure TFormButtonClick(Sender: TObject);
const
// URL Location
SourceFile := http://wwwgooglecom/intl/de/images/home_titlegif;
// Where to save the file
DestFile := c:\temp\googleimagegif;
begin
if DownloadFile(SourceFile DestFile) then
begin
ShowMessage(Download succesful!);
// Show downloaded image in your browser
ShellExecute(ApplicationHandlePChar(open)PChar(DestFile)PChar()nilSW_NORMAL)
end
else
ShowMessage(Error while downloading + SourceFile)
end;
加入如下代碼
NMHTTPInputFileMode := ture;
NMHTTPBody := 本地文件名;
NMHTTPHeader := Headtxt;
NMHTTPOutputFileMode := FALSE;
NMHTTPReportLevel := Status_Basic;
NMHTTPProxy := 代理服務器的IP地址;
NMHTTPProxyPort := 代理服務器的端口號;
With NMHTTPHeaderInfo do
Begin
Cookie := ;
LocalMailAddress := ;
LocalProgram := ;
Referer := ;
UserID := 用戶名稱;
Password := 用戶口令;
End;
NMHTTPGet(http://wwwabcdefgcom/software/azip);
試試吧Delphi的目錄中有TNMHTTP控件的例子NT+Win+IE+你可以用URL Moniker的功能
uses URLMon;
OleCheck(URLDownloadToFile(nilURLFilenamenil));
其中最後一個參數你還可以傳入一個IBindStatusCallback的實現以跟蹤下載進度或控制中止下載簡單的場合一句話就搞定了
BTW URL Moniker封裝了大多數URL而不是像NMHTTP那樣封裝協議因此你可以用URLDownloadToFile下載HTTPFTP甚至本地文件和局域網文件還有其他的custom moniker比如MSITSTORE(MSDN Library的文檔moniker實現)
var
DownLoadFile:TFileStream;
beginio
DownLoadFile:=TFileStreamCreate(c:\aararfmCreate);
IdHTTPGet(http://wwwsinacomcn/download/aararDownLoadFile);
DownLoadFileFree;
end;
From:http://tw.wingwit.com/Article/program/Delphi/201311/24713.html