新聞中心
數(shù)據(jù)庫存圖技能get!極簡教程讓你速學怎樣存儲圖片
創(chuàng)新互聯(lián)公司長期為近1000家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為平果企業(yè)提供專業(yè)的網(wǎng)站設計、成都網(wǎng)站制作,平果網(wǎng)站改版等技術服務。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
在現(xiàn)代化的網(wǎng)絡開發(fā)之中,圖片的上傳和存儲已成為功能的必須點之一。無論是一個社交媒體網(wǎng)站還是一家電商平臺,圖片上傳、管理和展示都是關鍵的功能之一,但是如何在后端存儲圖片卻是一項比較費神的技巧。在這篇文章中,我們將學習如何通過數(shù)據(jù)庫存儲圖片,從而達到方便管理、一致性、并且易于備份的目的。
1.數(shù)據(jù)庫存儲圖片的原理
當用戶上傳圖片時,圖片的二進制內(nèi)容被壓縮成流格式,然后通過HTTP表單發(fā)送到服務器,分解成文件名和文件內(nèi)容。在傳統(tǒng)的Web開發(fā)模式中,這些圖片最終都會被保存在本地服務器的磁盤上并進行管理。但是,當您開發(fā)的Web應用程序需要滿足跨多個數(shù)據(jù)中心的需求時,存儲在一個地方的二進制大型文件可能會很快成為一個問題,而這時候數(shù)據(jù)庫存儲圖片就派上用場了。
數(shù)據(jù)庫存儲圖片的原理很直觀:將圖片存儲在數(shù)據(jù)庫中的二進制blob字段中,這種方式將圖片的二進制內(nèi)容存儲在一個二級文件系統(tǒng)中。與存儲在硬盤上不同,數(shù)據(jù)庫存儲的圖像是與數(shù)據(jù)一起存儲的,因此數(shù)據(jù)被存儲在相同的地方,使得數(shù)據(jù)的維護和管理更加便捷。
2. 連接數(shù)據(jù)庫
我們將連接到MySQL數(shù)據(jù)庫并創(chuàng)建一個名為“image_store”的新數(shù)據(jù)庫。以下是如何連接數(shù)據(jù)庫的代碼示例:
“`php
$servername = “l(fā)ocalhost”;
$username = “root”;
$password = “”;
$dbname = “image_store”;
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die(“Connection fled: ” . $conn->connect_error);
}
echo “Connected successfully”;
“`
連接成功后,我們可以執(zhí)行以下語句創(chuàng)建一個名為“images”的新表來存儲圖片。
“`sql
CREATE TABLE images(
id INT AUTO_INCREMENT PRIMARY KEY,
image BLOB,
image_name VARCHAR(255)
);
“`
3. 上傳圖片并將其保存到數(shù)據(jù)庫
以下是上傳圖片并將其保存到數(shù)據(jù)庫的代碼示例:
“`php
if(isset($_FILES[‘image’])){
$image_name = $_FILES[‘image’][‘name’];
$image = addslashes(file_get_contents($_FILES[‘image’][‘tmp_name’]));
$sql = “INSERT INTO images (image, image_name) VALUES (‘$image’, ‘$image_name’)”;
if ($conn->query($sql) === TRUE) {
echo “New record created successfully”;
} else {
echo “Error: ” . $sql . “
” . $conn->error;
}
}
“`
此段代碼首先驗證用戶是否上傳了圖像,然后獲取文件名和blob數(shù)據(jù)。我們使用“addslashes()”將二進制數(shù)據(jù)轉(zhuǎn)換為字符串,然后將其插入到數(shù)據(jù)庫表中。
4. 從數(shù)據(jù)庫中檢索圖像并在頁面上呈現(xiàn)
以下是從數(shù)據(jù)庫中檢索圖像并在頁面上呈現(xiàn)的代碼示例:
“`php
$sql = “SELECT * FROM images”;
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo ““;
}
} else {
echo “0 results”;
}
“`
此段代碼執(zhí)行一個SQL查詢,并從結果集中構建了一個包含所有圖像的循環(huán)。對于每個圖像,使用base64編碼將圖像數(shù)據(jù)轉(zhuǎn)換為字符串形式,然后使用元素在html上呈現(xiàn)出來。
在本教程中,我們介紹了如何使用PHP將圖像存儲在MySQL數(shù)據(jù)庫中。連接數(shù)據(jù)庫、創(chuàng)建表,上傳圖像和將其解碼然后在已經(jīng)上傳的圖像中呈現(xiàn)并沒有什么可嚇人的。然而,學習如何存儲和管理圖像,能夠加速至關重要的Web開發(fā)過程。我們希望這篇文章能夠幫助你掌握存儲圖片的技巧,并在你的下一個Web應用程序中實現(xiàn)保存圖像數(shù)據(jù)的功能。
相關問題拓展閱讀:
- 如何往數(shù)據(jù)庫中存圖片
- 怎么把圖片存入數(shù)據(jù)庫中??
如何往數(shù)據(jù)庫中存圖片
兩種,一種是將圖片轉(zhuǎn)化成二進制數(shù)據(jù)流存入數(shù)據(jù)庫中。一種是保存圖片的路徑,然后前臺讀取路徑去調(diào)用圖片。相關的代碼百度一下應該會有,第二種方法實現(xiàn)上蔽世比較簡單,就拿陸是存儲路徑,然后根據(jù)路徑讀取對應的圖片顯示出來。之一種就比較麻煩,要先把圖宏敏肢片轉(zhuǎn)化成二進制數(shù)據(jù),讀取時就是從數(shù)據(jù)庫讀取對應數(shù)據(jù)再轉(zhuǎn)化成圖片顯示出來。
怎么把圖片存入數(shù)據(jù)庫中??
如果非要存入數(shù)據(jù)庫表,直接以 BLOB類型的字段存入數(shù)據(jù)庫即可。
但一般不推薦這樣存,內(nèi)容太大了,放在表中不合適。
一般做法:圖片放在硬盤某個目錄下,數(shù)據(jù)庫中只存文件的路徑。需要顯示圖片時橘握棗,先從數(shù)據(jù)庫中找到相皮槐應的路徑,然后再從磁盤找到對應的圖片,顯示出來。
不但圖片這樣做,想一些論壇的長篇帖子、論文、文檔等,都是這樣,不可能把具體內(nèi)容存入數(shù)據(jù)庫的,只存路徑就圓拆夠了。
關于怎樣把圖片存入數(shù)據(jù)庫的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
分享名稱:「數(shù)據(jù)庫存圖」技能get!極簡教程讓你速學怎樣存儲圖片(怎樣把圖片存入數(shù)據(jù)庫)
網(wǎng)站路徑:http://www.5511xx.com/article/cdgdojs.html


咨詢
建站咨詢
