Tirando de IMAGEN a un archivo PHP
Pregunta
Tengo un archivo PHP y una imagen en el mismo directorio. ¿Cómo podría obtener el archivo PHP para configurar sus encabezados como jpeg y '' pull ''? la imagen en ella. Entonces, si fuera a file.php, mostraría la imagen. Si reescribo file.php a file_created.jpg y necesita funcionar.
Solución
En lugar de usar file_get_contents como sugiere otra respuesta, use readfile y genera algunos encabezados HTTP más para que se reproduzcan bien:
<?php
$filepath= '/home/foobar/bar.gif'
header('Content-Type: image/gif');
header('Content-Length: ' . filesize($filepath));
readfile($file);
?>
readfile lee los datos del archivo y escribe directamente en el búfer de salida, mientras que file_get_contents primero extraería todo el archivo en la memoria y luego lo generaría. El uso de readfile hace una gran diferencia si el archivo es muy grande.
Si desea ser más lindo, puede generar la última hora modificada y verificar los encabezados http entrantes para encabezado If-Modified-Since , y devuelve una respuesta 304 vacía para decirle al navegador que ya tienen la versión actual ... aquí hay un ejemplo más completo que muestra cómo podría hacer eso:
$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);
Otros consejos
Debería ser fácil como:
<?php
$filepath= '/home/foobar/bar.jpg';
header('Content-Type: image/jpeg');
echo file_get_contents($filepath);
?>
Solo tendrá que descubrir cómo determinar el tipo mimo correcto, lo que debería ser bastante trivial.