![]() |
Binärdaten in einer MySQL-Tabell speichern und ausgeben
Hallo Leute,
ich möchte eine Datei (z.B. WORD) in einer mysql Tabelle speichern. In die Tabelle bringe ich die Daten auch, nur kann ich sie nicht mehr auslesen. Beim aufrufen erkenne ich zwar das es z.B ein Word Dokument bzw. ist auch der Name richtig, aber die Größe stimmt nicht bzw. kann sie auch nicht geöffnet werden. // meine Tabelle CREATE TABLE `anhang` ( `id` int(11) NOT NULL auto_increment, `dateiname` varchar(225) collate latin1_general_ci NOT NULL default '', `dateigroesse` int(11) NOT NULL default '0', `dateityp` varchar(225) collate latin1_general_ci NOT NULL default '', `daten` mediumblob NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=15 ; // eingabe Befehl $data = addslashes(fread(fopen($_FILES['anhang']['tmp_name'], "r+"), $_FILES['anhang']['size'])); $query="INSERT INTO anhang (dateiname,dateigroesse,dateityp,daten) ". "VALUES ('".$_FILES['anhang']['name']."', '".$_FILES['anhang']['size']."', '".$_FILES['anhang']['type']."', '".$data."')"; $result=mysql_query($query); // eingabe zelle <th> appendix:</th><td colspan="3"><input type="file" id="anhang" name="anhang" size="80"/> </td> // ausgabe script $SQL = "SELECT dateiname, dateigroesse, dateityp, daten FROM anhang WHERE id=$id"; $ResultPointer = mysql_query($SQL, $dbh); $Result=mysql_fetch_object($ResultPointer); header("Content-type: ".$Result->dateityp); header("Content-length: ".$Result->dateigroesse); header("Content-Disposition: attachment; filename=".$Result->dateiname); echo $data->Daten; Ich hoffe ihr könnt mir dabei helfen. Danke |
wie gross ist denn die datei nach dem herunterladen? die variable max_allowed_packet bestimmt die maximale grösse.
|
Zitat:
Wo müsste ich die Variable max_allowed_packet einsetzen??? Danke |
hallo,
ich habe ein bisschen was umgeschrieben dadurch erkenne ich jetzt die größe der Datei richtig und kann diese auch öffnen. NUR wird der Inhalt nicht richtig dargestellt. die neue Version: Eingabe: PHP-Quellcode: <?php $data = mysql_real_escape_string(fread(fopen($_FILES['anhang']['tmp_name'], "rb"), $_FILES['anhang']['size'])); $dateiname = mysql_real_escape_string($_FILES['anhang']['name']); $dateigroesse = mysql_real_escape_string($_FILES['anhang']['size']); $dateityp = mysql_real_escape_string($_FILES['anhang']['type']); $query="INSERT INTO anhang (dateiname,dateigroesse,dateityp,daten) ". "VALUES ('".$dateiname."', '".$dateigroesse."', '".$dateityp."', '".$data."')"; $result=mysql_query($query); $datei_id= mysql_insert_id(); ?> Ausgabe: PHP-Quellcode: <?php $SQL = "SELECT dateiname, dateigroesse, dateityp, daten FROM anhang WHERE id=$id"; $ResultPointer = mysql_query($SQL, $dbh); $Result=mysql_fetch_object($ResultPointer); header("Content-type: ".$Result->dateityp); header("Content-length: ".$Result->dateigroesse); header("Content-Disposition: attachment; filename=".$Result->dateiname); echo $Result->daten; ?> wenn ich eine Excel Datei verwende schaut der Inhalt so aus: Tabelle3Œ1+ÁÁ`iüT Suhner Type |
Alle Zeitangaben in WEZ +2. Es ist jetzt 18:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag