• 締切済み

Content-Disposition: inlineの必要性?

下記の例で、exampe.jpgをindex.htmlに、index.phpを介して、読み込ませる(表示する)場合、私が参考にしたコードではindex.phpのコードは以下の例のようになりますが(ちゃんと動作します)、なぜ「header("Content-Disposition: inline; filename=" . "example.jpg");」がindex.phpに必要なのか分かりません(どのような働きをしているのか?)。 私の場合、index.htmlからexample.jpgをダウンロードさせることは想定しておらず、ただexampe.jpgをindex.htmlに表示させたいだけです(実際には、example.jpgのダウンロード等を防ぐ目的の一部としてexample.jpg をcacheさせないためにindex.phpを利用しています。)。この場合でもやはり「header("Content-Disposition: inline; filename=" . "example.jpg");」がindex.phpに記述されていたほうが良いのでしょうか? 例: ディレクトリ構成(/var/www/htmlが公開ディレクトリ) /var/www/html/example.jpg /var/www/html/index.html /var/www/html/index.php - index.html: <img src="index.php" width="100" height="100" border="0"> - index.php: header("Content-type: image/jpeg"); header("Content-Disposition: inline; filename=" . "example.jpg"); header("Content-length: " . filesize("example.jpg")); readfile("example.jpg"); しかし、実際には、 - index.php: header("Content-type: image/jpeg"); header("Content-length: " . filesize("example.jpg")); readfile("example.jpg"); のように「header("Content-Disposition: inline; filename=" . "example.jpg");」なしでもexample.jpgはちゃんとindex.htmlに表示されます。 この質問に関連する情報が記載されたサイト等も、ご存知でしたらURLをお教えください。 よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 元々Content-Disposition HTTPヘッダーはマルチパートメッセージの中でインラインか添付かを指定するためのもので、今回のようにindex.phpが出力するコンテンツが単体のJPEG画像である場合は何の意味も持ちません。 > なぜ「header("Content-Disposition: inline; filename=" > . "example.jpg");」がindex.phpに必要なのか分かりません  私の記憶にある限りで唯一思いつくのは、古いInternet Explorerでは「Content-Disposition無指定(あるいはAttachment)」と「キャッシュさせない」という組み合わせの場合にエラーが起きる可能性があるというくらいでしょうか。ただ、これもテキストファイルやエクセルファイルなどの場合であって、画像の場合に起こるかどうかは分かりません。 古いIE:書いた方が良いかも知れないと言えなくもない可能性も否定できない。 それ以外:書いても書かなくても良い。 という2点で検討すると、それ以外に書いて損がないのであれば書いた方が良いのかも知れないですね。

kitty1000
質問者

お礼

anmochiさん ご回答、ありがとうございました。 参考にさせて頂きます。

関連するQ&A

  • PHP 画像の表示

    プログラミング初心者です。 PHPでブラウザに画像を表示したいのですが映らなくて 以下のソースコードは間違っているでしょうか? <?php $fileName = "img/test.jpg"; //ファイル名 if (file_exists($fileName)) { header('Content-type: image/jpeg'); header('Content-Length: '.filesize("http://localhost:8080/test.jpg")); //あった方が良い readfile("http://localhost:8080/test.jpg"); //ファイルを読み込んで標準出力に書き出し exit; } ?>

    • ベストアンサー
    • PHP
  • ダウンロードさせると*.phpにリネームされてしまう。

    phpでファイルのダウンローダを作成したのですが、IEで動かすと*.phpと動作しているphpのスクリプトネームにリネームされてしまいます。 FireFoxではリネームされる事無くダウンロードされるのですが、IEでの解決方法をご存知の方、どうぞご教授くださいませ。 コードは $filesize=filesize($filedldir); header ("Accept-Ranges: none"); header ("Content-Length: $filesize"); header ("Content-Type: application/octet-stream"); header ("Content-Disposition: attachment; filename=$fnames"); readfile ($filedldir); exit; といった感じです。 何がおかしいのでしょうか?

    • ベストアンサー
    • PHP
  • fileのダウンロードとページ移動を続けて行うには?

    初心者です。教えて頂けますか? フォームのボタンを押したらダウンロードする様に作りました。 ボタンを押したらダウンロードとページ移動を続けて行うには どの様にすれば良いでしょうか? header( "Content-Type: application/octet-stream" ); header( "Content-Disposition: attachment; filename=$contentFilePath" ); header( 'Content-Length: '.filesize($contentFilePath) ); readfile($contentFilePath);

    • ベストアンサー
    • PHP
  • header関数で出力するContent-Lengthが以下の条件では

    header関数で出力するContent-Lengthが以下の条件では0になってしまいます。 header("Content-Test: ".filesize("./data.dat")); header("Content-Length: ".filesize("./data.dat")); readfile("./data.dat"); なおかつ、data.datのサイズが2.6MB以上。 それぞれのバージョンは以下の通りです。 Apache 2.2.15 PHP 5.3.2 上の条件で、ヘッダを確認したらContent-Testはちゃんとdata.datのサイズが書かれて いるのですが、Content-Lengthが0になってしまいます。 readfileの行を削除して、実行してもContent-Lengthだけが0になってしまいます。 headerで指定したContent-Lengthをそのまま出力するにはどうしたら良いですか? ご存知の方がおられましたら、ご教示お願いいたします。

    • 締切済み
    • PHP
  • PHP getimagesize();

    プログラミング初心者です。 現在、PHPにてブラウザに画像の表示をしようとしているのですが 上手く行きません。ソースコードを張るのでダメなところがありましたら 手ほどきの程お願い致します。 ーーーーー <?php $fileName = "test.jpg"; //ファイル名 if (file_exists($fileName)) { header('Content-type: image/jpeg'); header('Content-Length: '.filesize($fileName)); //あった方が良い readfile($fileName); //ファイルを読み込んで標準出力に書き出し ★getimagesize(test.jpg); exit; }else{ echo "b"; } ?> ーーーー 目的 - phpにてブラウザに画像の表示 状況 - 最初は★のある行はなしでやっていたが 画像が映るも、かなり小さかったので大きくしようと ★のある行を追加。 - 画像の小ささはスクリーンショットを参考

    • ベストアンサー
    • PHP
  • これの正解を教えてください

    超初心者なんですけれど・・・ <?php $filename = & $_POST["filename"] header("Content-type: audio/mpeg"); header("Content-Disposition: attachment; filename=$filename"); readfile($filename); ?> これの正解を教えてください! お願いします。

    • ベストアンサー
    • PHP
  • IEだと・・・だめなんです

    Zipファイルに固めてダウンロードさせようとしているのですが、Firefoxだとダウンロードできて、IEだとエラーが出てこけてしまいます。 まず、Header部分が原因だと思うのですが、原因分かる方いらっしゃいますか?教えてください。 header("Content-type: application/octet-stream"); header('Content-Disposition: attachment; filename="' . zip_file_name . '"'); header("Content-length: " . filesize($zip_file_name)); readfile($zip_file_name);

    • ベストアンサー
    • PHP
  • 画像をダウンロードさせたい。

    いろいろなファイルがサーバーにあがっているとして、 その一覧が<a href="">ファイル名</a>で表示されているとします。 ファイル名を押下した時にダウンロードさせたいと思っています。 -------------------------------------------------- header("Content-Disposition: inline; filename=".$fileDlName); header("Content-Length: ".$fileDlSize); header("Content-Type: application/octet-stream"); readfile($filePath) ------------------------------------------------- ↑でCSV,PDF,ZIPファイルなどはダウンロードできるようになりました。 が、JPEG,GIF,PNGなどはブラウザに表示されてしまい ダウンロードできません。 画像も強制でダウンロードさせたいのですがよい方法はありますか?? ブラウザ:IE7 PHP:5.2.3 Apache:2.0.59 以上、よろしくお願いいたしますm(_ _)m

    • ベストアンサー
    • PHP
  • 動画をダウンロードするとサイズ0で終了する

    動画をダウンロードするとサイズ0となってしまいます。   動画:AVI、サイズ:122MB プログラムは <?php $file = "".$_GET["id"].".avi"; $file_length = filesize($file); header("Content-Disposition: attachment; filename=$file"); header("Content-Length: $file_length"); header("Content-Type: application/octet-stream"); readfile ($file); ?> で、ファイル名は正常に受け渡されています。 また、サイズも表示させたとこころ正常値でした。 ちなみに、サイズ19MBのAVIで試したところ、正常にダウンロード できました。 サイズの問題だと思うのですが、対応方法をお教え下さい。 宜しくお願い致します。

    • 締切済み
    • PHP
  • ダウンロードが機能しない。

    html,php共に初心者です。教えて頂けますか? ダウンロードボタンを押すと、以下のphpファイルを開きダウンロードを行う様にしたのですが、mac safari ではダウンロード出来たのですが、 windows IE では ダウンロード出来ませんでした。 ファイルの構成は以下です。 /www/category/contentsList.php <-ダウンロードボタンがあります /www/category/downloader.php <-ダウンロードボタンを押すと呼ばれます。 /contentDirectory/ダウンロードするファイル.zip downloader.phpの記述は以下のみです。 <?php $serverDirectory = dirname($_SERVER['DOCUMENT_ROOT']); $contentDirectory = $_POST['contentDirectory']; $fileName = $_POST['fileName']; $filePath = $serverDirectory.'/'.$contentDirectory.'/'.$fileName; header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.$fileName.'"'); header('Content-Length: '.filesize($filePath)); readfile($filePath); ?> どうすれば良いでしょうか? 大変申し訳ありません。よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう