2010-05-18 83 views
6

有沒有一種方法可以將圖片(不是url,圖片)插入到使用phpmyadmin創建的MYSQL表中? ,如果有我想要獲取該圖片並將其插入頁面中,我該怎麼辦? :)我可以在MYSQL數據庫表中插入圖像嗎?

+1

使用BLOB類型,它會插入圖像爲0和1的 – Karthik 2010-05-18 14:39:12

+1

並請務必保存(並響應)與適當的mime類型相對應的那些0和1 ... – aioobe 2010-05-18 15:12:11

回答

7

這是可能的(使用BLOB類型),但它幾乎總是更好的只是將圖像存儲在文件系統中,並將路徑存儲到數據庫中的圖像。

幾個原因把我的頭頂部:

  1. 的BLOB將氣球數據庫的大小,使備份和恢復可能較爲困難(雖然有些人可能會認爲,它可以更容易,因爲你只需要備份數據庫而不是數據庫加上一堆文件)。

  2. 如果您使用select *的惰性代碼,將數據存儲爲BLOB可能會導致性能問題。

  3. 從文件系統提供圖像將比從數據庫提供圖像更快,並減少數據庫服務器上的負載。

  4. 您在服務圖像的位置獲得一些靈活性 - 例如,如果您希望將它們移到CDN中,

0

如果你要經常讀取的圖像,你可能會更好把它作爲一個文件並保存它的路徑,爲您節省上獲取的圖像數據庫運行。

否則,將圖像文件的內容存儲在BLOB列中,然後在HTML中打印<img src="image.php?id=1234" />

image.php應該在數據庫中查找ID爲1234的圖像,獲取該BLOB列的內容,並在提供正確的HTTP標題後打印它,例如, header('Content-type: image/gif');

但是嚴重。只需保存圖像文件。我保證,這種痛苦少得多。

0

當談到靜態資源,如背景圖像或菜單圖標等,我從來沒有見過任何人將它們存儲在數據庫中。對於動態內容,例如用戶上傳的圖像,這並不罕見。

下面是一些在數據庫中存儲圖像的pro和con。

優點:

  • 這在技術上是沒有與其他數據不同。更多,二進制格式。
  • 圖像與數據庫的其餘部分一起備份。
  • 不同步的(具有在數據庫中指向一個不存在的圖像中的數據庫的路徑,或未被引用的圖像)

缺點的無頭部疼痛:

  • 貯藏個別文件正是文件系統所面向的目標,所以它很可能會更好地擴展。
  • 更容易手動調試/查看圖像
  • Web服務器可以直接提供圖像(不需要額外的代碼從數據庫加載內容並提供適當的MIME類型等)。

就我個人而言,我總是發現優點大於缺點,並且始終在數據庫中包含圖像(以及mime類型)。我從來沒有注意到任何缺點或性能問題,但另一方面,我從來沒有在非常大的網站上工作過。

相關的問題和資源:

相關問題