Delphi文件下载器组件 [英] Delphi File Downloader Component
本文介绍了Delphi文件下载器组件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
解决方案
使用高级 URLDownloadToFile
功能:
使用UrlMon;
...
URLDownloadToFile(nil,'http://www.rejbrand.se/','C:\Users\Andreas Rejbrand\Desktop\\ \\index.html',0,nil);
或者,您可以使用WinInet函数很容易地编写自己的下载器功能,如
使用WinInet;
...
hInet:= InternetOpen(PChar(UserAgent),INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
try
hURL:= InternetOpenUrl(hInet,PChar('http://'+ Server + Resource),nil,0,0,0);
尝试
重复
InternetReadFile(hURL,@Buffer,SizeOf(Buffer),BufferLen);
...
这里有很多示例代码。使用上面的搜索框。
更新
我写了一个小样本。您可能希望在自己的线程中执行此代码,并让其每10 kB左右ping它,以便您可以为用户提供一些进度条。例如,
function DownloadFile(const UserAgent,URL,FileName:string):boolean;
const
BUF_SIZE = 4096;
var
hInet,hURL:HINTERNET;
f:file;
buf:PByte;
amtc:cardinal;
amti:integer;
begin
result:= false;
hInet:= InternetOpen(PChar(UserAgent),INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
try
hURL:= InternetOpenUrl(hInet,PChar(URL),nil,0,0,0);
try
GetMem(buf,BUF_SIZE);
try
FileMode:= fmOpenWrite;
AssignFile(f,FileName);
try
重写(f,1);
重复
InternetReadFile(hURL,buf,BUF_SIZE,amtc);
BlockWrite(f,buf ^,amtc,amti);
,直到amtc = 0;
result:= true;
finally
CloseFile(f);
结束
finally
FreeMem(buf);
结束
finally
InternetCloseHandle(hURL);
结束
finally
InternetCloseHandle(hInet);
结束
结束
i need a file downloader component for Delphi . may you help me ?
解决方案
Use the high-level URLDownloadToFile
function:
uses UrlMon;
...
URLDownloadToFile(nil, 'http://www.rejbrand.se/', 'C:\Users\Andreas Rejbrand\Desktop\index.html', 0, nil);
Or, you could very easily write your own downloader function using the WinInet functions, something like
uses WinInet;
...
hInet := InternetOpen(PChar(UserAgent), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
hURL := InternetOpenUrl(hInet, PChar('http://' + Server + Resource), nil, 0, 0, 0);
try
repeat
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
...
There is a lot of sample code here at SO. Use the search box above.
Update
I wrote a small sample. You might want to execute this code in its own thread and let it ping back every 10 kB or so, so that you can provide the user with some progress bar, for instance.
function DownloadFile(const UserAgent, URL, FileName: string): boolean;
const
BUF_SIZE = 4096;
var
hInet, hURL: HINTERNET;
f: file;
buf: PByte;
amtc: cardinal;
amti: integer;
begin
result := false;
hInet := InternetOpen(PChar(UserAgent), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
hURL := InternetOpenUrl(hInet, PChar(URL), nil, 0, 0, 0);
try
GetMem(buf, BUF_SIZE);
try
FileMode := fmOpenWrite;
AssignFile(f, FileName);
try
Rewrite(f, 1);
repeat
InternetReadFile(hURL, buf, BUF_SIZE, amtc);
BlockWrite(f, buf^, amtc, amti);
until amtc = 0;
result := true;
finally
CloseFile(f);
end;
finally
FreeMem(buf);
end;
finally
InternetCloseHandle(hURL);
end;
finally
InternetCloseHandle(hInet);
end;
end;
这篇关于Delphi文件下载器组件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文