2010-11-21 96 views
1

我創建了一個表單,允許用戶將圖像上傳到服務器中的文件夾。如何將圖像插入數據庫?我在名爲blog的數據庫中創建了一個名爲upload的表名稱,以及名爲MediumBLOB的值爲image的行。將圖像插入數據庫

如果上述聽起來不合邏輯,我該如何從服務器動態調用圖像?

謝謝。

+1

是不是有一個原因,你不離開圖像的文件系統,只存儲路徑或ID到它的數據庫? – Matthew 2010-11-21 05:59:52

+0

@konforce不,沒有具體原因。你能解釋我可以如何將ID存儲在數據庫中,然後用ID調用圖像?謝謝。我是否在img標籤中定義ID?謝謝。 – brad 2010-11-21 06:01:32

+0

(小寫字母b),通常我只是做一個getimg.php?id = 234234腳本,然後該PHP腳本將重定向到圖像,按原樣返回文件內容,或者處理任何裁剪/調整大小必要(並緩存它)。無論如何,它都會查找數據庫中的映像ID並找到服務器上實際文件的路徑。 – Brad 2010-11-21 08:12:09

回答

1

參見this howto。但是,您應該真的考慮使用參數化查詢,而不是內聯傳遞查詢參數。

+0

偉大的鏈接。但現在我有點困惑。我應該將完整的圖像存儲在數據庫中,還是爲其分配一個ID,然後通過ID調用它?謝謝 – brad 2010-11-21 06:04:22

+0

大多數數據庫管理員建議不要在數據庫中存儲像圖像這樣的大塊blob數據,因爲每次需要獲取映像時都會不必要地對數據庫服務器徵稅。有兩種方法可以解決這個問題:將文件存儲在webroot中的一個目錄中,以便Web服務器可以按原樣託管它們,或將它們存儲在其他位置並使用腳本來提供它們(例如'image.php?id = xxx')。無論哪種方式,是的,將實際文件名更改爲數據庫中圖像的ID,或者想出其他方式將數據庫條目映射到文件系統條目。 – cdhowie 2010-11-21 06:07:00

+0

@brad:它罕見的youll實際上是想將圖像本身存儲在db中。 jsut在文件系統上存儲路徑。那麼當你去顯示它時,它將文件系統路徑轉換爲公共路徑和圖像。 – prodigitalson 2010-11-21 06:08:19