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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top