Вопрос
У меня есть файл PHP и изображение в одном каталоге. Как я могу получить PHP-файл для установки его заголовков в формате jpeg и " pull " изображение в это. Так что, если бы я пошел в file.php, он показал бы изображение. Если я переписываю file.php в file_created.jpg, и он должен работать.
Решение
Вместо того чтобы использовать 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);
Другие советы
Должно быть просто, как:
<?php
$filepath= '/home/foobar/bar.jpg';
header('Content-Type: image/jpeg');
echo file_get_contents($filepath);
?>
Вам просто нужно выяснить, как определить правильный тип пантомимы, что должно быть довольно тривиально.