Потянув IMG в PHP-файл - PullRequest
       19

Потянув IMG в PHP-файл

0 голосов
/ 15 января 2009

У меня есть файл PHP и изображение в одном каталоге. Как я могу получить файл PHP, чтобы установить его заголовки в формате jpeg и «вытянуть» изображение в него. Так что, если бы я пошел в file.php, он показал бы изображение. Если я переписываю file.php в file_created.jpg, и он должен работать.

Ответы [ 2 ]

7 голосов
/ 15 января 2009

Вместо того, чтобы использовать 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);
1 голос
/ 15 января 2009

Должно быть просто, как:

<?php
    $filepath= '/home/foobar/bar.jpg';
    header('Content-Type: image/jpeg');
    echo file_get_contents($filepath);
?>

Вам просто нужно выяснить, как определить правильный тип пантомимы, что должно быть довольно тривиально.

...