2017-06-06 3 views
1

Ich muss viele Dokumente in meiner Datenbank speichern und es gelingt mir, es mit PDF zu arbeiten. Wenn ich versuche, JPG oder GIF zum Beispiel hochzuladen, wurde der Inhalt nicht angezeigt, wenn ich ihn erneut von der Download-Funktion unten herunterlade.PHP LongBlob Hochladen/Herunterladen funktioniert nicht mit Bildern

Download-Funktion:

public function downloadFile($id) { 
    if($id!=null){ 
    $sql = "SELECT * FROM document WHERE id = ?"; 
    $stmt = $this->db->prepare($sql); 
    $stmt->bindValue(1, $id); 
    $stmt->execute(); 
    foreach ($stmt as $row) { 
     header("Content-length:".$row['taillefichier']); 
     header("Content-type:" . $row['typefichier']); 
     header("Content-Disposition: attachment; filename=".$row['nomfichier']); 
     echo $row['fichier']; 
    } 
    } 
+0

* "Wenn Ich versuche zum Beispiel JPG oder GIF hochzuladen, der Inhalt wurde nicht angezeigt, wenn ich ihn erneut herunterlade. "* - Frage ist; Gibt es einen Inhalt, der zu Beginn in db hochgeladen wurde? Suchen Sie auch nach Fehlern? –

+0

... und wenn an db Inhalt gesendet wird, wie groß ist die Größe im Vergleich zur Quelle der Datei? –

+0

Ja, ich kann es aus dem MySQL Blob-Feld herunterladen, aber meine PHP-Download-Funktion scheint nicht zu funktionieren, zeigt es immer Inhalt Fehler beim Versuch, es nach dem Download-Funktion zu öffnen, Die Größe ist 209942 im Größenfeld von MySQL-Tabelle und 205000 im Blob-Feld – Kryze

Antwort

1

So finde ich die Antwort auf meine eigene Frage, und ich werde die aktualisierte Funktion hier

public function downloadFile($id) { 
    if($id!=null){ 
    $sql = "SELECT * FROM document WHERE id = ?"; 
    $stmt = $this->db->prepare($sql); 
    $stmt->bindValue(1, $id); 
    $stmt->execute(); 
    foreach ($stmt as $row) { 
     header("Content-length:".$row['taillefichier']); 
     header("Content-type:".$row['typefichier']); 
     header("Content-Disposition: attachment; filename=".$row['nomfichier']); 
     header("Content-type:".$row['typefichier']); 
     ob_clean(); 
     flush(); 
     echo $row['fichier']; 
    } 
    } 
} 

mehr Siehe hier schreiben: https://stackoverflow.com/a/31318718/7295677

Verwandte Themen