在開發過程中,有時我們需要上傳圖片到MySQL數據庫。而MySQL提供了一種二進制格式的數據類型已經可以存儲和管理二進制文件(如:圖片)。今天我們就來簡單地學習一下MySQL數據庫中如何上傳圖片。
首先,我們需要在MySQL中創建一個表,用來存儲圖片的二進制數據。下面這個例子創建了一個名為“images”的表,它有三個字段:id,filename和image。
CREATE TABLE images (
id INT PRIMARY KEY AUTO_INCREMENT,
filename VARCHAR(64),
image MEDIUMBLOB
);
接下來是PHP代碼部分。假設上傳表單的方式是POST請求,其中包含了一個名為“upload” 的文件。我們先用$file變量表示上傳的文件,打開它、讀取它并編碼為base64字符串。這個字符串可以用于MySQL二進制數據的輸入。在這里我們使用了mysqli的發起方法來預處理我們的查詢語句。
$filename = $_FILES['upload']['name'];
$file = fopen($_FILES['upload']['tmp_name'], "rb");
$fileContent = fread($file, filesize($_FILES['upload']['tmp_name']));
$fileContent = base64_encode($fileContent);
$stmt = mysqli_prepare($conn, "INSERT INTO images (filename, image) VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, 'ss', $filename, $fileContent);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
這是一個基礎示例,具體上傳圖片需要根據實際情況簡單修改一下。當然,從MySQL中讀取二進制圖片并將其顯示出來的過程也是需要的,但已經超出了本篇文章的范圍,我們會在以后的文章中再探討。