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