ImageMagikで画像を生成して標準出力し、ブラウザに画像を表示したとき、この画像の名前を指定しておくことはできないのでしょうか?


画像を右クリックして、名前を付けて保存しようとすると、CGI名がファイル名になり、jpgなのかpngなのかもわかりません。あらかじめファイル名を指定しておくことはできないのでしょうか?

以下のように書いています。
ファイルはサーバに残す必要はありません。(むしろ残さない方がいい)

use Image::Magick;
# オブジェクト作成
my $image = Image::Magick->new;

# 画像読み込み
$image->Read(sprintf($file, $id));

print "Content-type: image/jpg\n\n";
binmode STDOUT;
$image->Set(quality=>95);
$image->Write('jpg:-');

exit;

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/12/05 00:35:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:hujikojp No.1

回答回数101ベストアンサー獲得回数7

ポイント35pt

*.cgi の名前のCGI scriptで画像を返信するのではなく、一時的に結果をファイルに出力しておき、そこに redirectすればで実現できると思います。

ファイルがserverに残ってしまうのが嫌であれば、http://../foo.cgi/bar.jpeg などのURLで foo.cgiに redirectし、そこで転送後に消すなどすればいいのかも。

あとは、ファイル名が固定でよい(拡張子が .cgiなどになるのだけが問題)ならば、CGI scriptの拡張子を .jpgなどにして、そのdirectory だけ AddHandlerなどしておく手もあります。

id:dingding

ありがとうございます。この方法でうまく行きました。

2008/11/29 18:22:31
id:goodvn No.2

回答回数228ベストアンサー獲得回数18

ポイント35pt

以下のようにすれば指定できます

print "Content-type: image/jpg; name=hoge.jpg\n";
print "Content-disposition: attachment; filename=hoge.jpg\n";
print "\n";
binmode STDOUT;
id:dingding

ありがとうございます。なぜかうまくいきませんでした

2008/11/29 18:22:16

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません