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

MySQL 直接儲存圖片與二進位檔案實戰:BLOB 欄位完整應用範例

     編輯:MySQL 資料庫相關知識

若需將圖片、HTML 等二進位檔案直接存入 MySQL,可使用 LONGBLOB 欄位搭配 PHP 表單上傳與讀取程式實現。

資料庫與資料表建立

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

儲存檔案程式

store.php - HTML 表單上傳,讀取檔案內容寫入資料庫:

<?php
if ($submit) {
  mysql_connect("localhost", "root", "passWord");
  mysql_select_db("binary_data");
  $data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
  $result = mysql_query("INSERT INTO binary_data (description, bin_data, filename, filesize, filetype)
    VALUES ('$form_description', '$data', '$form_data_name', '$form_data_size', '$form_data_type')");
  $id = mysql_insert_id();
  echo "This file has the following Database ID: $id";
  mysql_close();
} else {
?>
  File to upload/store in database: <form method="post" enctype="multipart/form-data">
    <input type="file" name="form_data">
    <input type="text" name="form_description">
    <input type="submit" name="submit" value="store">
  </form>
<?php } ?>

上傳成功會顯示資料庫 ID,記下供讀取使用。

讀取檔案程式

getdata.php - 依 ID 讀取並輸出檔案:

<?php
if ($id) {
  mysql_connect("localhost", "root", "passWord");
  mysql_select_db("binary_data");
  $query = "SELECT bin_data, filetype FROM binary_data WHERE id=$id";
  $result = mysql_query($query);
  $data = mysql_result($result, 0, "bin_data");
  $type = mysql_result($result, 0, "filetype");
  header("Content-type: $type");
  echo $data;
}
?>

呼叫方式:getdata.php?id=2。若為圖片,可直接用 <img src="getdata.php?id=3"> 引用。

儲存 >1MB 大檔案設定調整

  1. 修改表單 MAX_FILE_SIZE 為 24000000
  2. 修改 php.ini:upload_max_filesize、post_max_size 設 24M
  3. MySQL 啟動參數加大封包:max_allowed_packet=24M
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved