ご指導をよろしくお願いいたします。
WindowsXPsp2 Delphi 6Personalです。
Webページの画像、ファイルをDLするとき、事前にファイルの種類が
判らない場合があります。(たいていは指定してありますが)
このとき、どのようにファイルを指定すればいいのか判断する方法を教えて頂きたいのですが。
例えば、Webページのボタンをクリックするとアーカイブファイルをダウンロードする例をよく見かけます。
(失礼してMr_XRAYさんのサイトの一部を参考にさせて頂きます)
procedure TForm1.FormCreate(Sender: TObject);
begin //これはページの一部です(簡潔にするため)
WebBrowser1.Navigate('http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/plSamplesIndex.htm');
end;
このページのダウンロードボタンで下記のリンクをDL出来ます。
procedure TForm1.Button1Click(Sender: TObject);
var url:string;
begin // URLDownloadToFileは uses節に Urlmon,が必要
url:='http://hpcgi2.nifty.com/Mr_XRAY/DLCounter/pl_lime.cgi?plSamplesDL';
URLDownloadToFile(nil, PAnsiChar(url +#0), PAnsiChar('外部ファイル.lzh'+#0), 0, nil);
end;
事前にはファイル名は不明なのでテストでは'外部ファイル.lzh'としていますがzipか、htmlか、pdfか、不明なのではと思いますが。
実際にはplSamples.lzhというファイルです。
事前に判ると下記のようにスマートにいくのですが。
URLDownloadToFile(nil, PAnsiChar(url +#0), PAnsiChar('plSamples.lzh'+#0), 0, nil);
よろしくお願いいたします。
TWebBrowserでやる方法はわかりませんが
HTTP/1.0 302 Moved Temporarilyを受けとりゃいいので
Indyならこんな感じで取得は可能です。
procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
begin
s:='http://hpcgi2.nifty.com/Mr_XRAY/DLCounter/pl_lime.cgi?plSamplesDL';
try
Memo1.Text:= IdHTTP1.Get(s);
except
on e: EIdHTTPProtocolException do
case e.ReplyErrorCode of
302 :Memo1.Text:= IdHTTP1.Response.Location;
end;
end;
end;
もにやさん早速教えて頂きありがとうございます。
ご返事が遅くなりすみません。
Delphi6PersonalなのでIndyが標準で付いていないのでインストールに
手間取りました。(説明もありませんが)
uses節にIdHTTPを追加してIdHTTP1: TIdHTTP;を定義してもIdHTTP1.Get(s);
は追加しましたが、どうしても
case e.ReplyErrorCode で未定義とでます。
まだ何か追加する必要があるのでしょうか?
すみません、ご指導のほどお願いいたします。
ReplyErrorCodeがあるのは Indy9だよ。
いんでぃと春の空さん、ご指導ありがとうございました。
Indy10をインストールしました。
Indy9を探して入れ直します。
代用法はないんでしょうね。結構苦労したんです。(笑)
ありがとうございました。
ツイート | ![]() |