在MySQL數(shù)據(jù)庫中存儲圖片是一個常見的需求,本文將介紹如何在MySQL中存儲圖片,并且保證圖片的格式化。
CREATE TABLE `image` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `image` MEDIUMBLOB NOT NULL );
以上是創(chuàng)建存儲圖片的表的SQL語句,其中name字段用來存儲圖片的名稱,image字段用來存儲圖片的二進(jìn)制數(shù)據(jù)。
下面是如何向數(shù)據(jù)庫中插入圖片:
INSERT INTO `image` (`name`, `image`) VALUES ('image1', LOAD_FILE('/path/to/image1.jpg'));
以上SQL語句將圖片/image1.jpg插入到image表中,并命名為image1。
當(dāng)然,我們也可以通過程序(比如PHP)來實(shí)現(xiàn)圖片的插入和讀取,下面是示例代碼:
//插入圖片 $filename = '/path/to/image1.jpg'; $conn = mysqli_connect("localhost", "root", "password", "database"); $imageData = addslashes(file_get_contents($filename)); $query = "INSERT INTO `image`(`name`, `image`) VALUES ('image1', '{$imageData}')"; mysqli_query($conn, $query); //讀取圖片 $query = "SELECT `image` FROM `image` WHERE `name`='image1'"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_assoc($result); header("Content-type: image/jpeg"); echo $row['image'];
以上代碼使用了addslashes()函數(shù)來轉(zhuǎn)義圖片的二進(jìn)制數(shù)據(jù),并使用file_get_contents()函數(shù)讀取圖片數(shù)據(jù)。
在讀取圖片時,通過設(shè)置header()函數(shù)的Content-type來指定圖片格式,然后輸出圖片的二進(jìn)制數(shù)據(jù)。
在實(shí)際應(yīng)用中,還需要考慮如何壓縮、調(diào)整圖片大小等問題,但存儲圖片格式化的基本思路是一樣的。