2017-06-06 2 views
1

Je dois stocker beaucoup de documents dans ma base de données et je parviens à le faire fonctionner avec PDF. Lorsque j'essaie de télécharger JPG ou GIF par exemple, le contenu ne s'affiche pas lorsque je le télécharge à partir de la fonction de téléchargement ci-dessous.PHP LongBlob Upload/Télécharger ne fonctionne pas avec les images

Télécharger la fonction:

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

* "Quand J'essaie de télécharger des fichiers JPG ou GIF par exemple, le contenu ne s'affiche pas lorsque je le télécharge de nouveau. "* - La question est; y a-t-il du contenu qui a été téléchargé sur db pour commencer? Cherchez-vous aussi des erreurs? –

+0

... et s'il y a du contenu envoyé à db, quelle est la taille par rapport à la source du fichier? –

+0

Oui, je peux le télécharger à partir du champ MySQL Blob, mais ma fonction de téléchargement PHP ne semble pas fonctionner, il me montre toujours l'erreur de contenu en essayant de l'ouvrir après utilisation pour télécharger la fonction, La taille est 209942 dans le domaine La table MySQL et 205000 dans le champ blob – Kryze

Répondre

1

donc je trouve la réponse à ma propre question et je posterai la fonction mise à jour ici

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']; 
    } 
    } 
} 

Voir plus ici: https://stackoverflow.com/a/31318718/7295677