欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql數據庫表存圖片

錢斌斌2年前10瀏覽0評論

對于一些需要存儲圖片的網站或應用,我們可以選擇將圖片存儲在MySQL數據庫表中。這種方式相較于將圖片直接存儲在服務器磁盤上,具有訪問控制、備份等優點。

在 MySQL 數據庫中,可以通過 BLOB 二進制類型來存儲圖片。使用 BLOB 類型,我們可以像存儲其他文本數據一樣在表中建立一個 BLOB 字段。

下面是一個簡單的 MySQL 數據庫表,用于存儲圖片:

CREATE TABLE `images` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`data` blob NOT NULL,
`type` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

可以看到,該表具有以下字段:

  • id:圖片的唯一標識符
  • name:圖片的名稱
  • data:存儲圖片的二進制數據
  • type:存儲圖片的 MIME 類型(例如:image/png)

存儲圖片時,我們需要將圖片的二進制數據讀取出來,并將其插入到數據庫表中。下面是一個 PHP 示例代碼:

<?php
$dsn = "mysql:host=localhost;dbname=mydatabase";
$username = "myusername";
$password = "mypassword";
try {
$pdo = new PDO($dsn, $username, $password);
} catch (PDOException $exception) {
die("Cannot connect to database: " . $exception->getMessage());
}
$file = "./path/to/my/image.png";
$name = "My Image";
$type = "image/png";
$data = file_get_contents($file);
$sql = "INSERT INTO images(name, data, type) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$name, $data, $type]);
?>

以上代碼通過讀取文件的方式獲取到圖片的二進制數據,并將其插入到數據庫表中。當我們需要讀取圖片時,可以使用以下代碼:

<?php
$dsn = "mysql:host=localhost;dbname=mydatabase";
$username = "myusername";
$password = "mypassword";
try {
$pdo = new PDO($dsn, $username, $password);
} catch (PDOException $exception) {
die("Cannot connect to database: " . $exception->getMessage());
}
$id = 1; // 圖片的 ID
$sql = "SELECT name, data, type FROM images WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$id]);
if ($row = $stmt->fetch()) {
$name = $row['name'];
$type = $row['type'];
$data = $row['data'];
// 輸出圖片
header("Content-Type: $type");
header("Content-Disposition: inline; filename=$name");
echo $data;
} else {
// 圖片不存在
}
?>

以上代碼中,我們根據 ID 獲取到數據庫表中的圖片并將其輸出到瀏覽器端。這種方式可以有效地控制圖片的訪問權限,避免了圖片被盜取或濫用的情況。