sql >> Database >  >> RDS >> Mysql

hoe een op een blob gebaseerd bestand te downloaden van de MySQL-database in PHP?

Dit is het meest voorkomende probleem bij het omgaan met het blob-bestand. Uit je voorbeeld kan ik zien dat je "fileType" opslaat als de extensies van de bestanden (d.w.z. 'jpg' voor afbeeldingen, 'pdf' voor pdf-bestanden enz.), die je uploadt. Maar in plaats daarvan kunt u het bestandstype opslaan als het MIME-inhoudstype.

Stel dat als u een jpeg-afbeelding uploadt - het MIME-type wordt opgeslagen in het "fileType" als de "image/jpeg". Evenzo wordt het voor pdf opgeslagen als "applicatie/pdf". Ik heb op deze manier code ontworpen om het blob-bestand uit de database te downloaden. Ik ga ervan uit dat de bestanden al zijn geüpload naar de databasetabel die je hebt gemaakt.

Databasetabel "uploads"

| bestandsID | bestandsnaam | bestandstype | bestandsgrootte |fileData | gebruikers-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;

?>

Je kunt de volledige code van blob-upload hier vinden .



  1. Een Oracle-audit overleven

  2. afbeelding uploaden naar mysql-database php

  3. Opgeslagen procedure met Out-parameter oproepen met PDO

  4. Hoe bewaar je meerdere opties in één tabel?