2012-04-15 5 views
0

Ich arbeite an einem Projekt, das Datei-Uploads hat. Diese Dateien erhalten einen zufälligen Namen und befinden sich außerhalb des Web-Verzeichnisses.Looping, eine Reihe von Headern und ... nichts passiert

Ich habe dann ein Skript, das dieses Bild basierend auf Parametern in der URL abgerufen, die absolut gut funktioniert.

Allerdings habe ich ein Array der Header, die ich an den Browser übergeben wollte und dann durch diese mit einem foreach Loop gemacht und sie schien nichts einzustellen. Aber wenn ich sie manuell mit der header Funktion einstelle, funktionieren sie! Bizarr!

Jetzt habe ich nichts dagegen, die header Funktion zu verwenden, anstatt sie durchzuschleifen, aber gibt es einen bestimmten Grund, dass das nicht funktioniert?

Ich benutze auch die obige Methode, um alle meine Header in einem Array zu speichern und sie dann bei der Bereitstellung des Inhalts an den Browser zu verarbeiten, aber ich kann nicht sicher sagen, ob sie tatsächlich übergeben werden, das oben genannte Problem zu sehen!

Snippet meiner Code:

// Expiry date in seconds, in this instance a year 
$expiry_date= (60 * 60 * 24 * 365); 
// Our headers 
$img_headers= array(
    'Content-Type : ' . $mime, 
    'Cache-Control: no-cache, must-revalidate', 
    //'Cache-control: max-age=' . $expiry_date, 
    'Expires:' . gmdate(DATE_RFC1123, time() + $expiry_date), 
    'Pragma: ', 
    'Last-Modified: ' . gmdate(gmdate(DATE_RFC1123), filemtime($image_path)), 
    'Content-Length: ' . (string) filesize($image_path), 
    'Content-Disposition: inline; filename="' . $image_name . '"' 
);    

/*header('Content-Type: ' . $mime, TRUE); 
header('Cache-Control: no-cache, must-revalidate', TRUE); 
header('Expires: ' . gmdate(DATE_RFC1123, time() + $expiry_date)); 
header('Pragma: ', TRUE); 
header('Last-Modified: ' . gmdate(gmdate(DATE_RFC1123), filemtime($image_path)), TRUE); 
header('Content-Length: ' . (string) filesize($image_path), TRUE);*/ 

// Loop through and set up our headers! 
foreach($img_headers as $new_header) 
{ 
    header($new_header, TRUE); 
} 

// Read our image and end the rest of the file execution 
return die(readfile($image_path)); 

Alles, was dort die deplatziert aussieht?

Vielen Dank im Voraus!

Antwort

1

Diese beiden Methoden sollten identisch sein. Vielleicht verursacht das zusätzliche Leerzeichen in "Content-Type:" das Problem?

+0

Scrap, dass ich ein bisschen ein Kopf von mir selbst mit diesem Kommentar war! Ich kann nicht glauben, dass ich einen so einfachen Fehler verpasst habe! * seufz * Vielen Dank dafür! Ich fühle mich jetzt wirklich dumm! Heh – Azirius

0

versuchen Sie, Ihre foreach-Schleife mit den folgenden zu ersetzen, hatte ich ein ähnliches Problem, wo Leerraum Logikfehler erstellt, ist es einen Versuch wert.

foreach($img_headers as $new_header) 
{ 
    header(trim($new_header), TRUE); 
} 
+0

Danke trotzdem! :] – Azirius

+0

dangit ich war in der Nähe;) froh, dass es gelöst ist – Cristian