Mailinglisten-Archive |
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