sql >> Databasteknik >  >> RDS >> Mysql

hur laddar man ner blobbaserad fil från MySQL-databas i PHP?

Detta är det vanligaste problemet när man hanterar blob-filen. Från ditt exempel kan jag se att du sparar "filtyp" som filtilläggen (dvs. 'jpg' för bilder, 'pdf' för pdf-filer etc.), du laddar upp. Men istället för det kan du spara filtypen som MIME-innehållstypen.

Anta att om du laddar upp en jpeg-bild - kommer MIME-typen att lagras i "filtyp" som "bild/jpeg". På samma sätt för pdf kommer den att lagras som "applikation/pdf". Jag designade kod så här för att ladda ner blob-filen från databasen. Jag kommer att anta att filerna redan är uppladdade till databastabellen du skapade.

Databastabell "uppladdningar"

| fil-ID | filnamn | filtyp | filstorlek |fildata | användar-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;

?>

Du kan hitta den fullständiga koden för blob-upload här .



  1. MySQL bulk drop tabell där tabell som?

  2. Vilka tecken är faktiskt kapabla att orsaka SQL-injektion i MySQL?

  3. MySql UUID-dupliceringsfel

  4. Lagrade procedurer vs utlösare i MySQL