Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

làm thế nào để tải xuống tệp dựa trên blob từ cơ sở dữ liệu MySQL trong PHP?

Đây là vấn đề phổ biến nhất gặp phải khi xử lý tệp blob. Từ ví dụ của bạn, tôi có thể thấy rằng bạn đang lưu "fileType" dưới dạng phần mở rộng của tệp (tức là 'jpg' cho hình ảnh, 'pdf' cho tệp pdf, v.v.), bạn đang tải lên. Nhưng thay vào đó, bạn có thể lưu loại tệp dưới dạng loại nội dung MIME.

Giả sử nếu bạn tải lên một hình ảnh jpeg - kiểu MIME sẽ được lưu trữ trong "fileType" dưới dạng "image / jpeg". Tương tự đối với pdf, nó sẽ được lưu trữ dưới dạng "ứng dụng / pdf". Tôi đã thiết kế mã như thế này để tải xuống tệp blob từ cơ sở dữ liệu. Tôi sẽ giả định rằng các tệp đã được tải lên bảng cơ sở dữ liệu mà bạn đã tạo.

Bảng cơ sở dữ liệu "tải lên"

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

?>

Bạn có thể tìm thấy mã đầy đủ của blob-upload tại đây .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm ID trùng lặp gần đây nhất với MySQL

  2. Làm cách nào để khôi phục tệp kết xuất từ ​​mysqldump?

  3. Chuyển đổi số kỷ nguyên thành ngày con người có thể đọc được trong mysql

  4. MYSQL Đã cắt ngắn giá trị DOUBLE không chính xác

  5. Làm cách nào để bạn đặt giá trị mặc định cho cột Ngày giờ trong MySQL?