9

私のサイトには、PHP で生成された画像を表示するページがあります。画像を右クリックして [名前を付けて画像を保存] をクリックすると、画像の生成に使用される php ファイルの名前がデフォルト名として取得されます。

これは、たとえば、画像の html です。

 <img src="picture_generator.php?image_id=5&extension=.png">

私が得る名前は次のとおりです:picture_generator.php.png

この名前をデフォルトの名前に設定する方法はありますか?

前もって感謝します

4

3 に答える 3

13

Content-DispositionHTTP ヘッダーで指定できます。

header('Content-Type: image/png');
header('Content-Disposition: inline; filename="' . $filename . '"');

ただし、一部のブラウザー (Internet Explorer など) は、このヘッダーを無視する可能性があります。最も確実な解決策は、URL を偽造し、ブラウザーに静的ファイルをダウンロードしていると信じ込ませることですが/images/5/foo.png、舞台裏の実際のパスは です/picture_generator.php?image_id=5&extension=.pngこれは、Apache のmod_rewriteなどの Web サーバー モジュールによって実現できます。

于 2011-06-28T14:18:40.940 に答える
4

HTTP ヘッダーを使用してファイル名を設定することはできますが、すべてのブラウザーがそれを尊重するわけではありません。

最も簡単な方法は、最後の部分に目的のファイル名が含まれるように URL を拡張することです。

<img src="picture_generator.php/desiredfilename.jpg?image_id=5&extension=.png&name=desiredfilename.jpg">

一部のブラウザーがその部分を使用するため、クエリ文字列の末尾にファイル名も追加したことに注意してください (実際には問題でnameはありません)。

サーバーの構成によっては、これは特別な構成なしですぐに機能します (mod_rewrite などは必要ありません)。/fooサイトの PHP-URL に" " を追加するだけで、サーバーで動作するかどうかを確認できます。PHP の出力が表示されれば、すべて問題ありません。404 エラーが表示された場合、サーバー構成ではそのような URL を処理できません。

于 2011-06-28T14:26:31.037 に答える
1

あなたの picture_generator.php ファイルに、名前を含むヘッダーを追加する必要があります。そのような

header("Content-Disposition: attachment; filename=\"myfile.png\""); 
于 2011-06-28T14:12:58.587 に答える