2011-05-11 73 views
26

我想使用web服務將文件插入駐留在遠程Web服務器上的MYSQL數據庫中。如何在MySQL數據庫中插入文件?

我的問題是:什麼類型的表列(如varchar等)將存儲文件?插入語句在文件的情況下會有所不同嗎?

回答

10

您需要使用BLOB,還有的小圖標,中,長,只是BLOB,與其他類型的,根據選一滿足您的尺寸需求。

TINYBLOB 255 
BLOB 65535 
MEDIUMBLOB 16777215 
LONGBLOB 4294967295 
(in bytes) 

insert語句是相當正常的。您需要使用fread然後addslashes來讀取文件。

+0

感謝您的答覆。所以當我創建插入語句時,我只需在插入的值部分輸入「abc.pdf」?還是我需要做點別的? – meetpd 2011-05-11 04:06:16

+0

哦,不,你插入內容,這是你用fread讀過的內容。 – 2011-05-11 04:07:55

+0

再次感謝您的快速回復。那麼,你可以給我看一個插入樣本的例子,看看它的樣子嗎? – meetpd 2011-05-11 04:09:49

10

其他的答案會給你一個好主意,如何完成你要求什麼....

然而

不是有很多情況下,這是一個好主意。通常最好只將文件名存儲在數據庫中,並將文件存儲在文件系統中。

這樣你的數據庫就小得多了,可以更容易運輸,更重要的是更快的備份/恢復。

+1

我完全同意這一點。文件系統是爲存儲和提供文件而構建的 - 它們非常擅長。但是,Blob總是在那裏,以防止它讓你的工作更輕鬆。我可以看到一些託管設置,將文件干擾到數據庫將節省時間,精力,甚至可以幫助提高速度。 – 2011-05-11 04:44:15

+0

@ hamlin11你是正確的,如果它只是幾個文件。如果是用於某種文檔存儲區域,那麼這樣做會是一個很大的問題。 – 2011-05-11 04:51:21

4

文件大小由MySQL類型:

  • TINYBLOB 255字節= 0.000255 MB
  • BLOB 65535字節= 0.0655 MB
  • MEDIUMBLOB 16777215字節= 16.78 Mb
  • LONGBLOB 4294967295字節= 4294.97 MB = 4.295千兆