sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo descargar un archivo basado en blob de la base de datos MySQL en PHP?

Este es el problema más común que se enfrenta al tratar con el archivo blob. De su ejemplo, puedo ver que está guardando "fileType" como las extensiones de los archivos (es decir, 'jpg' para imágenes, 'pdf' para archivos pdf, etc.), que está cargando. Pero en lugar de eso, puede guardar el tipo de archivo como tipo de contenido MIME.

Supongamos que si carga una imagen jpeg, el tipo MIME se almacenará en el "tipo de archivo" como "imagen/jpeg". Del mismo modo, para pdf se almacenará como "aplicación/pdf". Diseñé un código como este para descargar el archivo blob de la base de datos. Voy a suponer que los archivos ya están cargados en la tabla de base de datos que creó.

Tabla de base de datos "cargas"

| ID de archivo | nombre de archivo | tipo de archivo | tamaño de archivo | datos de archivo | ID de usuario |

descargar.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;

?>

Puede encontrar el código completo de blob-upload aquí .