Frage

Ich habe eine PHP-Datei und ein Bild im selben Verzeichnis. Wie könnte ich die PHP-Datei bekommen zu setzen, es ist Header als jpeg und „ziehen“, um das Bild hinein. Also, wenn ich ging es um file.php würde das Bild zeigen. Wenn ich umschreiben file.php zu file_created.jpg und es muss funktionieren.

War es hilfreich?

Lösung

Anstatt verwenden file_get_contents wie durch eine andere Antwort vorgeschlagen, verwenden Sie ReadFile- und Ausgabe heraus einige weitere HTTP-Header schön zu spielen:

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

ReadFile- liest die Daten aus der Datei und schreibt an den Ausgangspuffer direkt, während file_get_contents würde zuerst die gesamte Datei in den Speicher ziehen und dann ausgegeben es. ReadFile- Mit macht einen großen Unterschied, wenn die Datei sehr groß ist.

Wenn Sie wollten netteres bekommen, man konnte Ausgang der letzten Änderung, und überprüfen Sie die eingehenden HTTP-Header für die If-Modified-Since Header und Rück eine leere 304-Antwort, den Browser zu sagen, dass sie bereits die aktuelle Version haben .... hier ist ein vollständigeres Beispiel zeigt, wie Sie könnte das tun:

$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);

Andere Tipps

Sollte einfach sein wie:

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

Sie müssen nur herausfinden müssen, wie man den richtigen MIME-Typen zu bestimmen, was ziemlich trivial sein sollte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top