MySQL一般存儲圖片的方式是通過將圖片轉為二進制碼,然后將二進制碼存儲到數據庫中。
CREATE TABLE `image_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `image` longblob NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在上述代碼中,創建了一個名為image_table
的表,其中包含一個id
字段和一個image
字段。image
字段的數據類型為longblob
,用于存儲二進制碼。
當需要存儲圖片時,可以通過以下方式將圖片轉為二進制碼并存儲到數據庫中:
$file = "image.jpg"; $image = file_get_contents($file); $encoded_image = base64_encode($image); $sql = "INSERT INTO image_table (image) VALUES ('$encoded_image')"; mysqli_query($conn, $sql);
在上述代碼中,$file
變量存儲了需要存儲的圖片路徑,file_get_contents()
函數用于讀取二進制文件內容,并通過base64_encode()
函數將其轉為base64編碼的字符串。最后,通過mysqli_query()
函數將編碼后的字符串插入到image_table
表的image
字段中。
當需要從數據庫中讀取并顯示圖片時,可以通過以下方式重新將二進制碼轉為圖片:
$id = 1; $sql = "SELECT image FROM image_table WHERE id = '$id'"; $result = mysqli_query($conn, $sql); $row = mysqli_fetch_array($result); header("Content-type: image/jpeg"); echo base64_decode($row['image']);
在上述代碼中,$id
變量存儲了需要讀取的圖片在數據庫中的id
。通過mysqli_query()
函數從數據庫中讀取image
字段的值,并將其保存到$row
數組中。在顯示圖片時,要在HTTP響應頭中設置Content-type為相應的圖片類型,然后通過base64_decode()
函數將base64編碼的字符串重新轉為原始的二進制碼并輸出。