2012-02-02 77 views

回答

0

我猜測你不關心數據的格式(也就是說,你不會在數據庫級別查詢數據),在這種情況下,你應該看看二進制數據類型。

我不能沒有知道什麼數據庫您使用的後端更加具體,但是對於這個數據類型的一些常見的名字是BLOBbinaryvarbinaryrawimage

這裏更多:http://onlamp.com/onlamp/2001/09/13/aboutSQL.html

0

店在更名爲在文件名存儲記錄ID文件系統中的文件。這是較少的開銷,並允許更好的病毒掃描; 「你上傳了xyz病毒」。

你甚至可以做一些技巧,比如在其他服務器上存儲大文件。備份更容易。

2

看起來你需要全部磨合。我只會給方向,你需要處理它,並且如果有問題請與特定問題。

  1. 將文件上傳到您的文件系統或存儲或像Amazon S3這樣的其他位置。對於此用途,類似Apache FileUpload

  2. 上傳完成後,獲取將其保存在存儲服務器上的文件的位置。再說了,/mnt/media/uploads/file.extension

  3. 讓你的數據庫與存儲有關該文件的元數據一個表。一般來說它看起來像:

    upload_id | file_name | file_location | user_id | timestamp 
    

    其中upload_id是PK,file_name是上傳文件的原始名稱,file_location是它駐留在您的存儲文件的實際完整路徑user_id是上傳者的Id,來自users的FK表。

  4. 顯示部分:讓你的邏輯使用這個數據庫來顯示file_name

  5. 要下載,你可以有這樣的How to config Tomcat to serve images from an external folder outside webapps?,請注意,這不限於服務圖像文件。它可以提供任何類型的文件。

現在,你會想知道爲什麼我在做這麼多痛苦的事情而不是將它作爲二進制數據保存在數據庫中呢?那麼,我不想深入討論,我個人更喜歡這種方法,因爲我認爲數據庫用於數據,文件系統用於文件。在這裏看到一個很好的討論:Storing Images in DB - Yea or Nay?

希望這有助於。

相關問題