c# - 我應該將我的圖像存儲在數據庫或文件夾中嗎?




asp.net vb.net (7)

可能重複:
在DB中存儲圖像 - 是還是不?

你好

目前,我網站上的每家公司都有1張圖片,可以添加到他們的個人資料中。 我將該圖像保存到數據庫中....它的公司徽標。

現在我想讓他們添加更多圖片。 現在我不知道我是否必須將它全部保存在數據庫中或保存在文件夾中????

我認為文件夾會更好的原因是因為有很多很好的文章與花哨的銀色光有點功能,我可以使用,但所有這些只適合保存在文件夾中的圖像。

因為我不是很好,我很難改變代碼來查看數據庫而不是使用文件夾進行圖像檢索的示例。

我想在我的網站上添加這樣的東西(瀏覽圖片)。 有關如何在圖像保存在數據庫中時如何執行此操作的代碼示例? 我在VB.net中使用ASP.NET。 點擊這裡查看我在說什麼

任何想法的傢伙?

問候艾蒂安


AFAIK,flickr.com以及文件夾/文件服務器以及存儲在db中的引用,元數據等。 請參閱flickr體系結構


使用文件夾的優點是您不需要有一個自定義處理程序,可以從數據庫中取出這些BLOB並將它們轉換為常規流。 從不同位置託管它們也更簡單,您將避免數據庫服務器的負擔。

您必須小心存儲路徑名。 相對路徑名作為URL更好地工作,並且允許您在存儲它們的位置,服務方式等方面具有一定的靈活性和擴展性。


對此的兩點看法:

  1. 使用文件系統。 但是要確保你設計好你的方案,任何一個文件夾都不會超載圖像,這會成為管理的噩夢。 例如,您可以使用標識符的第一個或最後一個字母或後續位置表示法將其樹形化。 您的里程會有所不同,因此請確保該方案符合您的數據集(圖像)大小。 如果您只管理20個圖像,則無需詳細說明。

  2. 使用SQL Server 2008.它有一個名為filestream的新數據類型,同時將圖像保存到文件系統,但允許您通過標準數據庫查詢檢索它。 有關更多信息,請參見http://msdn.microsoft.com/en-us/library/cc949109.aspx

這些不是唯一的選擇,但至少,我建議選項#1,因為你可以通過使用基於文件系統的方案獲得更好的性能,而不是從數據庫中存儲和讀取blob 。


我去找文件夾。 如果你的sttorage空間不足(只需將它們移動到另一個磁盤並重新指向),就可以獲得更大的靈活性,與其他應用程序(例如Silverlight)相比具有更大的靈活性。 我只使用DB來保證必須安全的文件。


我會兩個都去。

首先,將每個圖像存儲為數據庫中的BLOB列。 通過這樣做,您可以放心,圖像始終包含在您的數據庫備份中(假設您這樣做)。

其次,將文件複製到文件夾中。 通過這樣做,您可以避免每次查詢數據庫(對於圖像文件)。 單獨存儲在文件夾中可能會產生影響,例如

  • 文件由於磁盤損壞而丟失
  • 文件不包含在備份操作中

到目前為止,我們所有的客戶項目採用相同的方法,我們遇到了各種問題,但沒有上傳的文件丟失。 (我們正在談論> 100GB的上傳文件)。

請注意,您可能需要查看以下內容:

  1. 確保無論何時更新/替換文件,都要在數據庫和文件夾上執行此操作。 否則,它將是不一致的。
  2. 您可能希望有一個單獨的表來存儲文件的信息。 通常,您可能希望存儲以下內容:(1)文件名(2)文件類型(3)文件大小/ mime類型
  3. 您可能希望拆分存儲數據的表。 我們的做法是,一旦表達到2GB,我們就創建另一個表。 設計得當,找到合適的桌子應該沒有任何問題。

希望這可以幫助。


我的網站也有同樣的問題。 我決定使用文件夾實現,因為如果你使用數據庫,當你只想備份你需要備份整個數據庫的圖片時...另一方面你可以保留de目錄結構,並做一個簡單的備份。

分開我的朋友,最好的問候!


我通常使用的方法是將圖像複製到文件夾並將相對URL保存在數據庫中。 這種方法的缺點是,如果有人刪除了圖像,則最終會在網頁中顯示“圖像未找到”,除非您每次渲染頁面時都要檢查。





file