PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Download starten klappt nicht


maja1960
13.06.2008, 12:14:57
Hallo zusammen,

kann mir bitte bei meinem Problem mit dem Download weiterhelfen, es gibt zwar einige Einträge im Forum dazu, die bei mir aber alle nicht zum Ziel führen.
Es klappt alles ganz gut bis zum öffnen des Speichern/Öffnen-Fensters im Browser. Hier wird einfach der Inhalt der Datei (eine PDF-Datei) im Browser angezeit. Ich habe mehrere Lösungsvorschläge aus dem Forum versucht - das Ergebnis ist aber immer das selbe - Anzeige des Dateiinhalts. Bitte um Hilfe.

Mein Aufruf des Downloads sieht wie folgt aus:

hier wird der Download gestartet

<form method='POST' action='download.php'>
<input type='hidden' name='file' size='20' value='edoc1.pdf'></p>
<p><input type='submit' value='Abschicken' name='B1'></p>
</form>


download.php ist ein eigenes script, das in einem eigenen Browserfenster abläuft

// download.php
<?php
require($_SERVER["DOCUMENT_ROOT"].'/script/globals.php');
require($IncludePfad.'GloFunctions.php');
$dir = $ImagePfad2;
$type = 'application/pdf';
if(!empty($_POST['file']) && !preg_match('=/=', $_POST['file']))
{
if(file_exists ($dir.$_POST['file']))
{
makeDownload($_POST['file'], $dir, $type);
}
}
?>

// function makeDownload ist im include 'GloFunctions.php' enthalten
function makeDownload($file, $dir, $type)
{
header("Content-Type: $type");
header("Content-Disposition: attachment; filename='dokument.pdf'");
readfile($dir.$file);
}

maja1960
15.06.2008, 11:09:15
in meiner weiteren Recherche habe ich in der header-Spezifikation gelesen, dass vor den header-Definitionen keine Ausgabe am Bildschirm - auch keine Leerzeile - erfolgen darf. Es wird aber eine Leerzeile ausgegeben bevor die Anzeige des Dateiinhalts am Bildschirm erfolgt. In meinem Code finde ich aber keine Stelle, an der diese Leerzeile ausgegeben werden soll.

deedee
16.06.2008, 17:14:36
Kannst es mal mit so etwas versuchen

<?php
// beim session gebrauch starte mit session_cache_limiter('private');
// IE browser haben probleme mit pdf und sessions
session_cache_limiter('private');
session_start();


// dieses im header functioniert hier

function makeDownload($file, $dir, $type)
{
header("Content-type: application/force-download");
header("Content-Transfer-Encoding: binary");
header("Content-Disposition: attachment; filename='dokument.pdf'");
readfile($dir.$file);
}
?>