Hallo!
Ich schreibe in eine Datenbank Dateien. Dazu habe ich wie folgt den Schreibvorgang implimentiert
Dabei ist natürlich die Frage warum ich als Parameterliste "ssisi" und nicht "sbisi" verwende. Nun, bei der letzten Variante bleiben die Dateiinhalte in meiner Datenbank leer nur die Metadaten werden ordnungsgemäß eingetragen. Der eigentliche Dateiinhalt ist dann 0 Byte. Mit "ssisi" siehe PHP: mysqli_stmt::bind_param - Manual werden sie gefüllt. Das klappt bei Textdateien auch ganz gut und auch Binärdateien werden irgendwie hoch geladen. Nur offenbar dabei so verändert, dass sie nicht mehr funktionieren.
Was kann ich nun tun um mit Prepared Statements vernünftig Binärdatei in eine Datenbank hoch zu laden?
P.S. Bitte keine Diskussion über Sinn oder Unsinn Binärdateien bzw. Dateien in eine Datenbank zu speichern.
Gruß niesel
Ich schreibe in eine Datenbank Dateien. Dazu habe ich wie folgt den Schreibvorgang implimentiert
PHP-Code:
if ($_FILES['file']['name'] && $_FILES['file']['name'] != "none") {
$filename=$_FILES['file']['name'];
$filesize=$_FILES['file']['size'];
$filetyp=$_FILES['file']['type'];
echo "filename=".$filename."<br>";
echo "filename=".$filesize."<br>";
$datas = addslashes(fread(fopen($_FILES['file']['tmp_name'], "rb"), filesize($_FILES['file']['tmp_name'])));
#echo $datas;
if ($medkind=="anim") {
$sql = 'INSERT INTO `Animation` (`Dokumentname`, `Daten`, `Dateigroesse`, `Typ`, `ZID`)';
$sql .='VALUES(?,?,?,?,?)';
$eintrag = $db->prepare($sql);
$eintrag->bind_param('ssisi', $filename,$datas,$filesize,$filetyp ,$zid);
$eintrag->execute();
Was kann ich nun tun um mit Prepared Statements vernünftig Binärdatei in eine Datenbank hoch zu laden?
P.S. Bitte keine Diskussion über Sinn oder Unsinn Binärdateien bzw. Dateien in eine Datenbank zu speichern.

Gruß niesel
Kommentar