Einfache Frage, wurde wahrscheinlich eine Million Mal gefragt, aber ich habe gesucht und bin nicht näher daran, dies zur Arbeit zu bringen.Öffnen Sie eine Datei im Browser bedient von PHP
Ich habe einen PHP-Skript im UserFrosting Framework, das eine Datei an den Benutzer über den Browser bedient. Ich möchte, dass die Datei in ihrem Browser geöffnet wird, wenn sie "Öffnen" und Download auswählen.
Problem ist, sind die einzigen Dinge, die richtig sind Textdateien öffnen. Alles andere (PDFs und JPGs, die bisher getestet wurden) wird nur als eine Seite mit ASCII/unlesbarem Code geöffnet, anstatt als PDF oder Bild interpretiert zu werden.
Hier ist der Code, den ich mit:
header('Content-Type: '. $mime);
header('Content-Length: ' . filesize($diskname));
header('Content-Disposition: inline; filename=' . $savename);
return readfile($diskname);
$mime
ist der Mime-Typ der Datei über eine Funktion eingestellt, könnte so application/pdf
oder image/jpeg
für die Dateien, die ich bisher zu sehen bin versucht.
Hat jemand irgendwelche Ideen, warum die Dateien nicht richtig öffnen?
UPDATE Nachdem die Antwort-Header überprüft, ich bin einen Inhaltstyp von text/html;charset=UTF-8
anstelle der application/jpeg
oder application/pdf
bekommen, dass es nach dem Code festgelegt haben soll ich benutze. Ich frage mich, ob dies ein UserFrost-Problem ist?
"könnte application/pdf oder image/jpeg sein" - Haben Sie überprüft, dass das ist, was der Server tatsächlich sendet? – Quentin
Nun $ mime wird definitiv auf application/pdf oder image/jpeg gesetzt, abhängig von der Datei. Mein Browser debug-fu ist allerdings nicht toll (mit Firefox), die Datei wird in einem neuen Tab geöffnet und es erscheint ein Fehler, der sagt: "Die Zeichenkodierung des HTML-Dokuments wurde nicht deklariert."Ich gehe davon aus, dass der Content-Type irgendwie verloren geht? – nockieboy
Öffnen Sie die Entwickler-Tools. Schauen Sie auf der Registerkarte Netzwerk. Laden Sie die Seite. Es zeigt Ihnen alle Anfragen und Antworten und lassen Sie die Header und Rohdaten untersuchen. – Quentin