2009-01-15 2 views
0

У меня есть файл PHP и изображение в том же каталоге. Как я могу заставить PHP-файл установить его заголовки как jpeg и «потянуть» изображение в него. Поэтому, если бы я пошел в file.php, он отобразил бы изображение. Если я переписал file.php на file_created.jpg, он должен работать.Pulling IMG Into PHP File

ответ

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 имеет большое значение, если файл очень большой.

Если вы хотите получить cuter, вы можете вывести последнее измененное время и проверить входящие заголовки 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

Должно быть легко, как:

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

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

+0

"readfile ($ filepath);" еще короче –