熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

用Delphi實現文件下載的幾種方法

2013-11-23 17:34:54  來源: Delphi編程 
筆者最近開發的系統中需要寫一個下載文件的功能以前用BCB調用API寫的很煩瑣忽然想起有一個API就可以搞定了於是一大早就來搜索這個API就是UrlDownloadToFile不僅如此Delphi的一些控件也可以輕松實現下載如NMHTTP指定NMHTTPInputFileMode := 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
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.