sql >> Databáze >  >> RDS >> Mysql

jak stáhnout soubor založený na blobu z databáze MySQL v PHP?

Toto je nejčastější problém, kterému čelíte při práci se souborem blob. Z vašeho příkladu vidím, že ukládáte „fileType“ jako přípony souborů (tj. „jpg“ pro obrázky, „pdf“ pro soubory pdf atd.), které nahráváte. Ale místo toho můžete uložit typ souboru jako typ obsahu MIME.

Předpokládejme, že pokud nahrajete obrázek jpeg - typ MIME bude uložen v "fileType" jako "image/jpeg". Podobně pro pdf bude uložen jako "application/pdf". Navrhl jsem kód jako tento ke stažení souboru blob z databáze. Budu předpokládat, že soubory jsou již nahrány do vámi vytvořené databázové tabulky.

Nahrávání databázové tabulky

| ID souboru | název souboru | typ souboru | fileSize |fileData | ID uživatele |

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;

?>

Úplný kód pro nahrání blob-upload naleznete zde .



  1. Získání návratové hodnoty z JDBC MSSQL

  2. Jak mohu vytvořit primární klíč jako AUTOINCREMENT

  3. Jak automatizovat proces synchronizace schématu databáze SQL Server

  4. Resetování AUTO_INCREMENT trvá v MySQL dlouho