同じディレクトリに PHP ファイルと画像があります。PHPファイルのヘッダーをjpegとして設定し、画像を「プル」するにはどうすればよいですか。したがって、file.php に移動すると、画像が表示されます。file.php を file_created.jpg に書き換えると、動作する必要があります。
2 に答える
7
別の回答で提案されているように file_get_contents を使用するのではなく、readfileを使用して、いくつかの HTTP ヘッダーを出力してうまく再生します。
<?php
$filepath= '/home/foobar/bar.gif'
header('Content-Type: image/gif');
header('Content-Length: ' . filesize($filepath));
readfile($file);
?>
readfile はファイルからデータを読み取り、出力バッファーに直接書き込みますが、file_get_contents は最初にファイル全体をメモリにプルしてから出力します。ファイルが非常に大きい場合、 readfile を使用すると大きな違いが生じます。
もっとかわいくしたい場合は、最終変更時刻を出力し、着信 HTTP ヘッダーでIf-Modified-Sinceヘッダーをチェックし、空の 304 応答を返して、ブラウザーに既に現在のバージョンがあることを伝えることができます....これを行う方法を示す完全な例を次に示します。
$filepath= '/home/foobar/bar.gif'
$mtime=filemtime($filepath);
$headers = apache_request_headers();
if (isset($headers['If-Modified-Since']) &&
(strtotime($headers['If-Modified-Since']) >= $mtime))
{
// Client's cache IS current, so we just respond '304 Not Modified'.
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $mtime).' GMT', true, 304);
exit;
}
header('Content-Type:image/gif');
header('Content-Length: '.filesize($filepath));
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $mtime).' GMT');
readfile($filepath);
于 2009-01-15T14:15:49.687 に答える
1
次のように簡単にする必要があります。
<?php
$filepath= '/home/foobar/bar.jpg';
header('Content-Type: image/jpeg');
echo file_get_contents($filepath);
?>
正しい MIME タイプを判別する方法を理解する必要があるだけです。これは非常に簡単なはずです。
于 2009-01-15T14:06:56.240 に答える