richtigen Content Type?

maga147

Erfahrenes Mitglied
Hallo,

ich habe in einer Tabelle verschiedene Dateien (.exe, .rar., .doc usw.) und möchte die aus der Datenbank runterladen können.

Als Script hab ich eine Abfrage gemacht, mit dem Content Type application.

Wenn ich das Script nun Ausführe, bekomm ich einen Dateinamen, die genau dieses Abfrage Script widerspiegelt. (bspw. pic.php) Wenn ich dann diese Datei umbenne, in die Ursprünglich Hochgeladene Datei, dann funktioniert das. (also pic.php in test.doc)

Wie schaffe ich es, die Datei die in der Datenbank ist, auch mit entsprechendem Namen zu speichern? Achja, in der Tabelle sind nur die Blob Dateien gespeichert.

PHP:
$dbverbindung = mysql_connect ($host, $user, $password);
$dbanfrage = "SELECT * from $tabelle where id='$id'";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);
$ausgabe = mysql_fetch_array ($result);


echo $ausgabe['data'];


mysql_close ($dbverbindung);


?>
 
Nachdem Du mit header() den Content-Type gesetzt hast nutzt Du header() nochmal um die Content-Disposition und den Dateinamen anzugeben.
PHP:
header("Content-Disposition:attachment; filename=\"".$download['filename']."\"");
 
hmm... kann ich das ganze mit Copy&Past übernehmen?

Irgendwie will das so nicht ganz. Lädt der Content Type den Dateinamen aus den BLOB Informationen
 
Bei mir gibt es ein Feld fuer den Dateinamen, und ich denke mal, dass es dieses Feld auch bei Dir gibt.
Vielleicht heisst es anders, aber ich denke es wird vorhanden sein.
 
das Feld gibt es, ich habe die Zeile auch an "mein" System angepasst, aber ich bekomme immer noch nicht die richtigen Namen

Hier nochmal das Script:

PHP:
header('Content-Type: application');
header("Content-Disposition:attachment; filename=\"".$ausgabe['name']."\"");

$dbverbindung = mysql_connect ($host, $user, $password);
$dbanfrage = "SELECT * from $tabelle where id='$id'";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);
$ausgabe = mysql_fetch_array ($result);


echo $ausgabe['data'];


mysql_close ($dbverbindung);
 
Hmm, die Dispostion und der Name sollten eigentlich richtig uebertragen werden.
Vielleicht haengt es ja mit dem falschen Content-Type zusammen.
Denn meines Wissens nach gibt es keinen Content-Type application.
Versuch mal application/octet-stream.
 
Jetzt funktioniert alles nicht mehr.... (auch schon vor Content-Type änderung)

Wenn ich die Datei mit *.php am PC habe und öffne, kommt ein Fehler, der auf Zeile 13 (unten markiert) verweist!!

Code:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/web43/html/pic.php on line 13

PHP:
header('Content-Type: application/octet-stream');
header("Content-Disposition:attachment; filename=\"".$ausgabe['name']."\"");


$dbverbindung = mysql_connect ($host, $user, $password);
$dbanfrage = "SELECT * from $tabelle where id='$id'";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);
$ausgabe = mysql_fetch_array ($result);         \\FEHLER


echo $ausgabe['data'];


mysql_close ($dbverbindung);


was läuft jetzt falsch! :confused:
 
ja, Tabelle wird über die Login informationen mit gefüllt und ID wird mit "pic.php?id=1" durch den Browser gefüllt
 
hab den Fehler gefunden!! Ich hatte bei den Logininformationen noch die Alten Server infos drin.... Der BLOB wird wieder richtig downgeladen - Allerdings immer noch in "pic.php" OHNE DATEI Namen
 
Zurück