Mysql
 sql >> Base de données >  >> RDS >> Mysql

comment télécharger un fichier basé sur un blob à partir de la base de données MySQL en PHP ?

C'est le problème le plus courant rencontré lors du traitement du fichier blob. D'après votre exemple, je peux voir que vous enregistrez "fileType" en tant qu'extensions des fichiers (c'est-à-dire "jpg" pour les images, "pdf" pour les fichiers pdf, etc.), que vous téléchargez. Mais au lieu de cela, vous pouvez enregistrer le type de fichier en tant que type de contenu MIME.

Supposons que si vous téléchargez une image jpeg - le type MIME sera stocké dans le "fileType" en tant que "image/jpeg". De même pour le pdf, il sera stocké sous "application/pdf". J'ai conçu un code comme celui-ci pour télécharger le fichier blob à partir de la base de données. Je vais supposer que les fichiers sont déjà téléchargés dans la table de base de données que vous avez créée.

Table de base de données "téléchargements"

| ID de fichier | nom_fichier | type de fichier | fileSize |fichierDonnées | ID utilisateur |

download.php

<?php
$connection =  mysqli_connect("localhost","root"," ",your_database)
               or die('Database Connection Failed');
mysqli_set_charset($connection,'utf-8');

$id = 1;

// Use a prepared statement in production to avoid SQL injection;
// we can get away with this here because we're the only ones who
// are going to use this script.
$query = "SELECT * " ."FROM uploads WHERE userID = '$id'";
$result = mysqli_query($connection,$query) 
       or die('Error, query failed');
list($id, $file, $type, $size,$content) = mysqli_fetch_array($result);
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$file");
ob_clean();
flush();
echo $content;
mysqli_close($connection);
exit;

?>

Vous pouvez trouver le code complet de blob-upload ici .