2009-01-15 6 views
0

J'ai un fichier PHP et une image dans le même répertoire. Comment puis-je obtenir le fichier PHP pour définir ses en-têtes en jpeg et "tirer" l'image en elle. Donc, si je suis allé à file.php, cela montrerait l'image. Si je réécris file.php à file_created.jpg et que cela doit marcher.Extraction d'IMG dans le fichier PHP

Répondre

7

Plutôt que d'utiliser file_get_contents comme suggéré par une autre réponse, utilisez readfile et sortie certains plus en-têtes HTTP pour jouer bien:

<?php 
    $filepath= '/home/foobar/bar.gif' 
    header('Content-Type: image/gif'); 
    header('Content-Length: ' . filesize($filepath)); 
    readfile($file); 
    ?> 

readfile lit les données du fichier et écrit directement dans la mémoire tampon de sortie, alors que file_get_contents tire d'abord le fichier entier en mémoire et le sort ensuite. L'utilisation de readfile fait une grande différence si le fichier est très volumineux. Si vous souhaitez obtenir cuter, vous pouvez afficher la dernière heure modifiée et vérifier les en-têtes http entrants pour l'en-tête If-Modified-Since et renvoyer une réponse 304 vide pour indiquer au navigateur qu'ils ont déjà la version actuelle .... Voici un exemple plus complet montrant comment vous pourriez faire cela:

$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

devrait être facile:

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

Vous aurez juste à comprendre comment déterminer le type MIME correct, ce qui devrait être assez trivial.

+0

"readfile ($ filepath);" est encore plus court –

Questions connexes