Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] binärdaten aus datenbank sind nicht gültig

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] binärdaten aus datenbank sind nicht gültig

    Hallo!

    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(); 
    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

  • #2
    Das ist jetzt schon der dritte Thread, den du zu der Thematik aufmachst ... kannst du bitte damit in einem bleiben? Das erhöht auch für alle Mitlesenden die Übersichtlichkeit.

    @moderation: Bitte mal mit dem hier zusammenführen: http://www.php.de/datenbanken/68022-...halt-leer.html, Danke.

    Zitat von nieselfriem Beitrag anzeigen
    Dabei ist natürlich die Frage warum ich als Parameterliste "ssisi" und nicht "sbisi" verwende.
    Wenn du nicht ständig neue Threads aufmachen würdest, müsstest du das jetzt nicht extra erklären - dann könnte es jeder im Threadverlauf nachvollziehen.

    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.
    Das ist keine brauchbare, nachvollziehbare Problembeschreibung.

    Ganz abgesehen davon, dass wir nicht wissen, was Binärdateien eigentlich tun sollen, wenn sie „funktionieren“ - was hast du bisher unternommen, um das Problem zu analysieren?


    Es macht stark den Eindruck, dass du da an etwas arbeitest, das noch ein paar Nummern zu groß für dich ist.
    Vielleicht solltest du dich erst mal ein bisschen mehr mit den Grundlagen beschäftigen; und vor allem auch lernen, wie man grundlegendes Debugging betreibt.


    EDIT: Kann es sein, dass das „nicht funktionieren“ einfach von den Slashes herrührt, die du selber aus irgendeinem wohl nur dir bekannten Grund mit addslashes hinzufügst?
    [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

    Kommentar

    Lädt...
    X