phpbar.de logo

Mailinglisten-Archive

[php] Word-File per PHP und Anpassung Dateiname

[php] Word-File per PHP und Anpassung Dateiname

Dennis Sterzenbach lists at darknoise.de
Die Okt 12 21:27:34 CEST 2004


Andreas Heigl wrote:
> hättest du meine gelesen, hättest du geschwiegen. ich will das ganze nämlich
> nicht runterladen (was, wie in meiner mail steht beim mac auch wunderbar mit
> dem richtigen Content-Type geht), sondern die Datei (pdf-Dokument) im
> Browser anzeigen lassen. Und leider braucht der browser die angabe des
> Content-Type application/x-pdf (oder sonstwas) damit die richtige
> HelperApplication / das richtige Plugin gestartet werden kann. Trotzdem
> erhalte ich immer wieder unter IE6(Windows) die Frage, ob ich die Datei
> öffnen möchte, oder doch lieber downloaden.
Sorry für die, offensichtlich als rauen Ton zu verstehende Mail. Es war 
keineswegs so gemeint wie es rüberkam.
Der Internet Explorer ist einfach nicht der bequemste Browser wenn es um 
Detailfragen geht. Leider. In diesem Fall weiß ich leider auch keine 
100%ige Lösung. Aber ich weiß wohl, dass der IE den Content-Type nicht 
vornehmlich hernimmt für die Ermittlung des Datentyps. Soweit ich weiß 
spinnt dieser nämlich auch dann rum, wenn alles korrekt ist, aber ihm 
die Dateiendung nicht schmeckt.
Von daher, kann man beim IE ruhig etwas wie "force download" anwenden.
Wenn man nun dies kombiniert mit der richtigen Dateiendung (also 
korrektem ; filename=xxxx.doc) und dem Disposition auf inline, sollte 
doch eigentlich der IE dies inline darstellen.
Ich hab es grad mal kurz getestet und bei mir funktionierte das Ganze 
zumindest mit einer fertigen Word-Datei, oder ich bin immer noch nicht 
ganz auf dem richtigen Dampfer.

<?php
// Check routinen etc...

// Rausschicken vom Krams
$filedata = file_get_contents($filename);
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') > 0) {
   Header('Content-Type: application/force-download');
} else { // richtigen Content-Type-Header schicken
   Header('Content-Type: application/octet-stream');
}
//Header('Content-Transfer-Encoding: binary'); // nicht erforderlich?
Header('Content-Length: ' . strlen($filedata));
Header('Content-Disposition: inline; filename=' . basename($filename));
Header('Expires: 0');
Header('Cache-Control: no-cache, no-store, must-revalidate');
Header('Pragma: no-cache');
print $filedata;
?>

-- 
   Dennis Sterzenbach

php::bar PHP Wiki   -   Listenarchive