Indyで、画像(JPEG)をダウンロードするには?

解決


かんとく  2012-10-31 09:56:52  No: 43297

お世話になっております。

Windows7,Delphi2007です。

Indyで、JPEGファイルをダウンロードするには、どうしたらよいでしょうか。

テキストなら、
var
  str:string;
begin

   str:=IdHTTP1.Get('http://○○.html');

end;

でいいと思うんですけど、
IdHTTP1.Getの戻り値が、string型なので、Getではまずいのかな、と思いました。

実は、今まで、Getを使って、JPEGをダウンロードしていたんですけど、範囲チェックエラーというのが発生してしまったため、Getではまずいのかな、と思いました。

以前の質問で、
IdHTTPのGetで範囲チェックエラー
https://www.petitmonte.com/bbs/answers?question_id=4605
というのがあって、「範囲チェックエラー」が出るので、同じような対処をしたらよいかな、と思いましたが、こちらも解決されてないようでした。

今回は、画像(JPEG)をダウンロードしようとしているので、この質問とは違うかもしれませんが、よろしくお願いします。


DEKO  2012-10-31 10:25:27  No: 43298

TIdHTTP.Get() のオーバーロードされたメソッドを使えばいいと思います。
以下を参考にしてください。

http://edn.embarcadero.com/article/images/40857/a4.pdf#page=56


かんとく  2013-01-10 07:56:14  No: 43299

ものすごく返事が遅くなって、すみません。

教えていただいたサイトを参考にして、JPEGファイルのダウンロードができました。

ありがとうございました。

---------------------------------------

フォームにButton1、TIdHTTP1を置く。

procedure TForm1.Button1Click(Sender: TObject);
var
  HTTP: TIdHttp;
  MS: TMemoryStream;
  URL: String;
  FileName: String;

begin

HTTP := TIdHttp.Create;
MS := TMemoryStream.Create;

try

  URL :='http://officeimg.vo.msecnd.net/ja-jp/files/614/832/ZA103920861.jpg';

  HTTP.Get(URL, MS);
  MS.Position := 0;

  FileName :='file.jpg';
  MS.SaveToFile(FileName);

finally

  MS.Free;
  HTTP.Free;

end;

end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加