Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie lade ich Blob-basierte Dateien aus der MySQL-Datenbank in PHP herunter?

Dies ist das häufigste Problem beim Umgang mit der Blob-Datei. Aus Ihrem Beispiel kann ich ersehen, dass Sie "fileType" als Erweiterung der Dateien speichern (z. B. "jpg" für Bilder, "pdf" für PDF-Dateien usw.), die Sie hochladen. Aber stattdessen können Sie den Dateityp als MIME-Inhaltstyp speichern.

Angenommen, Sie laden ein JPEG-Bild hoch – der MIME-Typ wird in „fileType“ als „image/jpeg“ gespeichert. Ebenso wird es für pdf als "application/pdf" gespeichert. Ich habe Code wie diesen entworfen, um die Blob-Datei aus der Datenbank herunterzuladen. Ich gehe davon aus, dass die Dateien bereits in die von Ihnen erstellte Datenbanktabelle hochgeladen wurden.

Datenbanktabelle "Uploads"

| Datei-ID | Dateiname | Dateityp | Dateigröße |Dateidaten | Benutzer-ID |

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;

?>

Den vollständigen Code von blob-upload finden Sie hier .