首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 儲存二進位檔案(圖片/文件)完整實作:BLOB 欄位讀寫範例

     編輯:MySQL 資料庫相關知識

資料庫結構設計


CREATE DATABASE binary_data;
USE binary_data;

CREATE TABLE binary_data (
    id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    description CHAR(50),
    bin_data LONGBLOB,
    filename CHAR(50),
    filesize CHAR(50),
    filetype CHAR(50)
) ENGINE=InnoDB;

LONGBLOB 支援 4GB,MEDIUMBLOB 16MB,BLOB 64KB,TINYBLOB 255B。

上傳儲存 store.php



說明:
檔案:

讀取顯示 getdata.php



HTML 引用範例



資料庫圖片


下載檔案

突破 1MB/2MB/24MB 限制

層級設定項建議值
HTML 表單MAX_FILE_SIZE24000000 (24MB)
PHPupload_max_filesize24M
PHPpost_max_size24M
PHPmemory_limit64M+
PHPmax_execution_time300 (5分鐘)
MySQLmax_allowed_packet24M (my.cnf [mysqld] 區段)
MySQL重啟參數mysqld --max_allowed_packet=24M

效能與架構建議

  • 小檔(<1MB):資料庫儲存可接受,簡化備份/同步
  • 大檔/高頻:建議存檔案系統/物件儲存,資料庫只存路徑/中繼資料
  • CDN 加速:靜態檔案走 CDN,資料庫僅管理元資料
  • Base64 編碼:若用 JSON API 傳輸,需 Base64 編碼,體積增大 33%

安全注意

  • 上傳驗證:MIME 類型、副檔名、魔數檢查
  • 儲存路徑不可直接 Web 存取
  • 下載時設 Content-Disposition: attachment 強制下載
  • 防止 SQL 注入:使用 Prepared Statements
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved