URL指定してファイルを取得する方法
|
9 |
URLDownloadFile |
動作確認 |
Delphi2007 |
更新日 |
2007/11/19(月) |
WEB上からダウンロードする方法は
いくつかのやり方があるので、まとめておきます。
すべてHTTPを使ったダウンロード方式になります。
・アクションのTDownLoadURLを使う方法
・UrlDownloadToFile関数を使う方法
・Indyを使う方法
・WinInet.DLLを使う方法
TDownLoadURLは内部的には
URLMonDownloadToFile関数を使っています。
UrlDownLoadToFileは
MSが提供しているコントロール「URL Monikers」の
Delphi用ラッパーユニット、UrlMonにある関数です。
WinInetを使う方法は、
応用をきかせると複雑になるので
別ページとしてまとめるので、ここでは扱いません。
────────────────────
//アクションのTDownLoadURLを使う方法
//uses ExtActns が必要
procedure TForm1.Button1Click(Sender: TObject);
var
SaveFileName, SaveURL: String;
DownLoadURL1: TDownLoadURL;
begin
SaveURL := Edit1.Text;
SaveFileName := StringReplace(SaveURL, 'http://',
ExtractFilePath(Application.ExeName), [rfIgnorecase]);
SaveFileName := StringReplace(SaveFileName, '/', '\', [rfReplaceAll]);
ForceDirectories( ExtractFileDir( SaveFileName ));
DownLoadURL1 := TDownLoadURL.Create(Self); try
DownLoadURL1.URL := SaveURL;
DownLoadURL1.Filename := SaveFileName;
DownLoadURL1.ExecuteTarget(nil);
finally DownLoadURL1.Free; end;
end;
────────────────────
//UrlDownloadToFile関数を使う方法
//uses UrlMon が必要
function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil,
PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
except
Result := False;
end;
end;
//成功:True 失敗:False
────────────────────
//Indyを使う方法
//IndyのVersionは9.0.14
procedure TForm1.Button4Click(Sender: TObject);
var
SaveFileName, SaveURL: String;
fs: TFileStream;
begin
SaveURL := Edit1.Text;
SaveFileName := StringReplace(SaveURL, 'http://',
ExtractFilePath(Application.ExeName), [rfIgnorecase]);
SaveFileName := StringReplace(SaveFileName, '/', '\', [rfReplaceAll]);
ForceDirectories( ExtractFileDir( SaveFileName ));
ForceDirectories( ExtractFileDir( SaveFileName ));
fs := TFileStream.Create(SaveFileName, fmCreate); try
IdHTTP1.Get(SaveURL, fs);
finally fs.Free; end;
//別の取得方法として
//IdHTTP1.Get(SaveURL)とすると
//指定URLの内容が文字列で取得できる
end;
────────────────────
参考────────────────────
Creation College -WebApplication Labo- :
http://www.campus.ne.jp/~ishigami/CREATION/TECHNIC/WEBAP-2.htm
Lupin Delphi Tips :
http://lupin.client.jp/delphi/#44
Indy Tips
http://www.monazilla.org/document/indytips.html
|