利用internet的相关 API 函数可以实现。下面的函数供你参考:
uses Wininet;
function GetInetFile(const fileURL, FileName: String): Boolean;
const BufferSize = 1024;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
sAppName: String;
begin
Result := False;
sAppName := ExtractFileName(Application.ExeName);
hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0);
try
AssignFile(f, FileName);
Rewrite(f, 1);
repeat
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
BlockWrite(f, Buffer, BufferLen);
until BufferLen = 0;
CloseFile(f);
Result := True;
finally
InternetCloseHandle(hURL);
end;
finally
InternetCloseHandle(hSession);
end;
end;
使用示例:
var
FileOnNet, LocalFileName: string
begin
FileOnNet := 'http://delphi.about.com/library/forminbpl.zip';
LocalFileName := 'File Downloaded From the Net.zip';
if GetInetFile(FileOnNet, LocalFileName) then
ShowMessage('Download successful')
else
ShowMessage('Error in file download');
end;
end;