Probleme bei Dateidownload im IE
Erdmann
- php
0 ChrisB
Hallo zusammen, ich habe mir ein php Script gebastelt, welches seine Daten in einer Datenbank speichert (typ ist MEDIUMBLOB).
Also braucht ich nurnoch ein Script, welches mir den Download der Dateien ermöglicht. unter Mozilla habe ich auch keine Probleme und das Fenster ob man die Datei öffnen/speichern will kommt und es ist auch die richtigte Datei zum Download freigegeben.
Unter dem IE 7 versuch das Script nun aber meine design.php in der halt der quellscode steht zu speichern. Ich habe bereits woanders gelesen, dass IE und Opera beim DL etwas anders sein sollen und von einer anderen Seite einen Schutz eingebaut, welcher aber anscheinend nicht korrekt klappt. Kann einer von euch vll den Fehler erkenne oder sagen, was ich falsch mache?
CODE:
$ausgabe = mysql_query("select type, datei_name, data from upload where ID = '$ID'");
if (!$ausgabe)
{
exit('Fehler beim Ausführen:' . mysql_error() .'<br />');
}
while($row = mysql_fetch_array($ausgabe))
{
$type = $row['type'];
$datei_name = $row['datei_name'];
$disposition = 'attachment';
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 5') || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera 7'))
{
$type = 'application/x-download';
}
header("content-disposition: $disposition; filename=$datei_name");
header("Content-type: $type");
header('content-length: '. strlen($data));
echo $data;
unset($_SESSION['pwschutz']);
exit();
}
Hi,
Unter dem IE 7 versuch das Script nun aber meine design.php in der halt der quellscode steht zu speichern.
Das ist schwerlich vorstellbar, eigentlich sogar unmoeglich - ein Client hat keine Moeglichkeit, den serverseitigen Scriptcode zu erhalten, sofern der Server nicht grob fehlkonfiguriert ist (bzw. dies explizit Ziel der Ausgabe ist).
Vermutlich speichert der IE nur die Daten, die du eigentlich herunterladen lassen willst, unter dem etwas unguenstigen Namen design.php ab - hast du das bereits ueberprueft? (Datei nach dem Runterladen mal clientseitig mit einem Editor geoeffnet o.ae.)
header("content-disposition: $disposition; filename=$datei_name");
IdR. wird empfohlen, den filename innerhalb dieses HTTP-Antwortheaders in doppelte Anfuerhungszeichen einzukleiden.
Siehe auch http://www.php-faq.de/q/q-datei-download.html, insb. letzter Teil.
MfG ChrisB