how to download blob based file from MySQL database in PHP?

前端 未结 2 1771
灰色年华
灰色年华 2020-12-03 16:15

How can i make a PHP script that will allow me to download a file from a database in MySQL. I have the following table named files where the uploaded file is sa

相关标签:
2条回答
  • 2020-12-03 17:12

    you can use session and post filename and file content to download page

    session_start();
    $_SESSION['filename'] = $filename
    $_SESSION['file'] = $file
    <a href="download.php">echo "Download File"</a>
    

    and in download.php use this code

    session_start();
    $filename = $_SESSION['filename'];
    $file = $_SESSION['file'];
    header("Content-Disposition: attachment; filename=$filename");
    ob_clean();
    flush();
    echo $file;
    
    0 讨论(0)
  • 2020-12-03 17:13

    This is the most common problem faced while dealing with the blob file. From your example, I can see that you are saving "fileType" as the extensions of the files (i.e 'jpg' for images, 'pdf' for pdf files etc.), you are uploading. But instead of that you can can save file type as the MIME content type.

    Suppose if you upload a jpeg image - the MIME type will be stored in the "fileType" as the "image/jpeg". Similarly for pdf it will be stored as "application/pdf". I designed code like this to download the blob file from the database. I am going to assume that the files are already uploaded into the database table you created.

    Database table "uploads"

    | fileID | fileName | fileType | fileSize |fileData | userID |

    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;
    
    ?>
    

    You can find the complete code of blob-upload here.

    0 讨论(0)
提交回复
热议问题