HP上ファイル名がない画像の保存

解決


fsky  2005-11-28 15:01:38  No: 128309

htmlファイルから画像を保存するプログラムを作っていますが、

http://dsa.er.cyberwing.co.jp/iserver/SITE=BIGLOBE_TV/AREA=NORMAL_ETC/AAMSZ=468x 60/TYP=2/

のようにabc.gifのようなファイル名が付いていないURLの画像を保存するにはどうしたら良いのでしょうか?
また、その画像のファイル名も呼び出して、その名前で保存したいのです。

IEで「名前をつけて保存」にするとファイル名を呼び出して保存してくれます。これと同じようにしたいのです。 

(Inetコントロールで通信)

以上のような質問を他の所をしたところ・・

GetHeaderメソッドで"Content-disposition"ヘッダを取得することで、
filenameが取得できるのではないか・・とご回答をいただいたのですが、

ヘルプを見ても、グーグルで検索しても、
どうもこれがよくわかりません。
再び質問してもこれ以上ご回答いただけなかったので、こちらでお聞きすることにしました。
もう少しわかりやすく説明をお願いしたいと思います。
よろしくお願いします。


あん  2005-11-28 16:43:27  No: 128310

ファイル名取得だけですが  別の方法で
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate ("http://dsa.er.cyberwing.co.jp/iserver/SITE=BIGLOBE_TV/AREA=NORMAL_ETC/AAMSZ=468x 60/TYP=2/")
'IE.Visible = True
While IE.Busy = True
Wend
MsgBox IE.Document.URL


魔界の仮面弁士  2005-11-28 18:26:25  No: 128311

保存するだけならば、名前を知る必要はあまり無いと思いますけれども。
任意の名前をつけて、Webサーバから返されてきたバイナリを、
そのままファイルに吐き出してやれば済みますよね。

たとえば、Webサイトによっては、画像ファイル名自体を持っておらず、
  http://www.ailight.jp/ASPGraph_Test.aspx
のように、画像を動的に作成するような場合もありますので、
そこに静的な名前をつけた所で、さほど意味は無いような気がします。

もし、静的な画像ファイルを返すようなページだったとしても、
Webサーバで使われている名前の中には、Windowsでファイル名として
使用できない文字が含まれている可能性もあるので、どちらにしても、
取得した名前をそのまま使えるという保証はありません。

> GetHeaderメソッドで"Content-disposition"ヘッダを取得することで、
> filenameが取得できるのではないか・・とご回答をいただいたのですが、
提示された画像の場合は、"Content-disposition" は無いようです。

その代わりに、"Location"レスポンスヘッダにて、
 http://imp.biglobe.ne.jp/ng_images/takefuji/051101_051014_01_tv.gif
のようなが指定されているようですので、InternetExplorerオブジェクトなどを
用いてリダイレクトURLを得れば、(今回のケースでは)画像のパスを
得る事ができるのではないでしょうか。

> もう少しわかりやすく説明をお願いしたいと思います。
フリーソフトの[InetSpy]などを用いれば、ブラウザとWebサーバの間で、
実際にどのような HTTP ヘッダがやり取りされているのかを
確認する事ができます。

その上で、それぞれのHTTPヘッダの意味を
  http://www.studyinghttp.net/header
などで調べてみれば、"Content-disposition" や "Location" の意味も
分かって来るのではないでしょうか。


いな  2005-11-29 01:17:53  No: 128312

> fsky さん

http://www.gizshare.com/vbtomo/boards/vbchoshoqa.php?do=leaf&num=6460

どちらで継続しますか?


あん  2005-11-29 01:41:06  No: 128313

>どちらで継続しますか?
なぜ  いちいち報告しているのでしょうか?
報告しなくてもいいのでは?
もっと有意義な情報を伝えましょうよ。


いな  2005-11-29 01:46:24  No: 128314

> なぜ  いちいち報告しているのでしょうか?

あちらの掲示板でのやり取りと
同じことをこちらの掲示板でやる手間をなくす為です。

あちらの掲示板で既に確認済みのことを、こちらの掲示板で
再度問い合わせるような、2度手間、3度手間をなくす為です。

> もっと有意義な情報を伝えましょうよ。

私は、このURLを回答することにより、

同じようには出来ません。「名前をつけて保存」ダイアログボックスを表示することは
出来ますけど、それだと手で入力しないといけないので。(^^;

一番簡単なのは、ftp でその URL をバイナリ配列で受けて、それを保存することだと思
います。IPersistFile オブジェクトを使って WebBrowser を保存しても、gif になりま
せんから。(^^;

の情報を伝えたつもりです。

> あん さん
  もうすこし、考えて発言しましょう。
  あなたの発言には、自己矛盾があって、非常に見苦しいです。


まるち  2005-11-29 01:55:28  No: 128315

>あんさんへ
マルチポストという言葉をご存知ですか?
http://e-words.jp/w/E3839EE383ABE38381E3839DE382B9E38388.html
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88
http://www.ippo.ne.jp/g/53.html
http://www11.ocn.ne.jp/~dkouta/l003.htm
以上、Googleでの検索結果、上位4つです。
複数の掲示板への書き込み自体は悪いことではないと思いますが、
あんさんのやり方はあまり誉められるような行動では無いということを覚えておいてください。


危険なアネハ  2005-11-29 03:21:35  No: 128316

「マルチポストはいけない」ということだけが一人歩きしていると思う。
複数で質問することにより、より多くの回答が書き込まれれば、ネット上により多くの資料ができあがったことになる。
それらがリンクで繋がっていれば尚便利だろう。

>どちらで継続しますか?

というのはただ指摘じみた表現に見えるので、
読者のためには「こちらにも質問・回答がありますね」というように書くのがベストではないでしょうか。


いな  2005-11-29 03:46:27  No: 128317

> それらがリンクで繋がっていれば尚便利だろう。

  今回は真偽の程は置いておいて、別々の人が投稿したということで、
  それぞれの情報の共有化ができていなかった箇所を共有化した
  という点において、

  あん さんの言うところの
  「有意義な情報」を伝えることが出来ていると認識しています。

> 読者のためには「こちらにも質問・回答がありますね」というように書くのがベストではないでしょうか。

そうですね、ちょっとフレームチックでした。反省


fsky  2005-11-29 08:16:48  No: 128318

返事が遅くなりすみません。

あんさん。ソースの記述ありがとうございます。すぐに試してみることができ、結果もうまくいきました。

魔界の仮面弁士さん。いろいろアドバイスありがとうございます。任意の名前をつけて呼び出すという方法も試してみて、うまく保存できました。

また、ファイル名自体がないものやWindowsで使用できない文字がある可能性のアドバイスや、フリーソフトInetSpy、HTTPヘッダのページのご紹介もありがとうございました。今後の参考にいたします。

ところで、少々戸惑っているのですが、私が最初に質問した所はここに提示されているリンク先ではありません。管理人さんが一人で回答されているところで、GetHeaderメソッドについての回答をいただいたあと、再度質問しましたが、3日間待ってもご回答いただけなかったため、こちらに移動してきた次第であります。


特攻隊長まるるう  2005-11-29 21:26:30  No: 128319

マルチポストについての理解はされましたか?
3日間回答がなければ放置してもよいと書いてありましたか?
4日目以降にその管理人さんが回答をつけたらどうしますか?
その回答がここの回答とは違った視点・方法だった場合は?
こちらで解決してるのにその管理人さんが未だ調べてくれてたら
どうしますか?
たまたまこちらで解決しましたが、先にそのサイトで解決した場合は?

お互いの情報を共有し、折角の協力を無駄にしないために
マルチポストをしない。どうしてもする場合はお互いにリンクを貼る
…それだけの事なんですが?

>私が最初に質問した所はここに提示されているリンク先ではありません
最初に?…そんな事を書くと後から書き込んだようにも伝わりますが…要は
リンク先が貴方の書き込みでは無いということですか?
世の中は広いので、掲示板の混乱を目的とし、無意味な転用をする人も
います。自分の書き込みでない事を伝え、こちらの掲示板で解決まで
待つことを明記すれば済む話でしょう?

常識で考えて、協力してもらえたら感謝し、少しでも相手の苦労が減るように
こちらも協力する…誰にでもできることだと思いますが?


危険なアネハ  2005-12-01 05:42:11  No: 128320

3日も待てば充分だと思う(質問難民を作らないためにも)。上記にはちゃんと回答に対して感謝の記述もあるし、「GetHeaderメソッドで」と最初に質問したところでの回答も転記されており、必要な手続きは完了していると思います。

そう目くじら立てて言いなさんな。この掲示板を読んでいると、質問者を叱りつけている場面が多々見られるが、読者として読む者にとっては大変不快に思う。他に読者がいることを意識して書き込んでもらいたいものである。

ただ同時多発のマルチポストはやめた方がいい。


  2005-12-01 05:44:45  No: 128321

> 危険なアネハさん
自己矛盾を含んだ文章って、最近流行りなの?


危険なアネハ  2005-12-01 06:15:05  No: 128322

叱るなと言っているのに、私が叱ってるということでしょうか?
私は意見を述べたつもりなのですが、いかがでしょうか?
本来こういうことは管理人が言うべきことなのでしょうが、全然出て来られないようで・・
あまり野放しにしないほうが良いと思いますが・・


  2005-12-01 06:45:01  No: 128323

> > そう目くじら立てて言いなさんな。
ここです。
ま、私の発言は無駄なので、どうぞスルーしてくださいな。


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

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






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