2010-09-27 133 views
2

在我的新c#.net 3.5 ASP網站上,用戶可以上傳圖片。如何將上傳的圖片保存到數據庫中?

什麼解決方案是最好的保存這張照片?我應該將其保存在我的服務器上的文件夾中,並將路徑保存在數據庫中,還是應該將圖片保存到數據庫中?

+0

ASP or ASP.NET? – abatishchev 2010-09-27 12:43:03

+1

[我應該在哪裏存儲照片?文件系統或數據庫?](http://stackoverflow.com/questions/1546485/where-should-i-store-photos-file-system-or-the-database)或http://stackoverflow.com/問題/ 1105429/stored-uploaded-photos-and-documents-filesystem-vs-database-blob – Oded 2010-09-27 12:44:59

回答

2

Pro文件:

  1. 有一個簡單的通話,以服務於文件的響應流。只要適當地設置ContentType,調用它,就完成了。
  2. 它更高性能(儘管這經常被誇大了,blobs或SQLServer文件流的使用往往是非常高效的,但與文件操作相比仍然失敗)。

臨DB:

  1. 一致性比較容易,你不能有情況的文件結構和數據庫不匹配。
  2. 如果您轉移到具有多個網絡服務器的網絡服務器場解決方案(超過一定的成功率,您將不得不這樣做),基於文件的解決方案就非常棘手。
  3. 由於修改而導致的數據遷移通常更容易。無論如何,你將不得不將數據庫數據移動到某個位置,所以一旦你解決了,你也已經解決了它的圖像。
  4. 操作代碼更容易編寫。
  5. 報告整個圖像集合更容易。
0

我應該將它保存在我的服務器上的文件夾中,並保存在數據庫中的路徑

你可以做這樣的事情或者......

可以採取FILESTREAM的優點功能。

文件將存儲在磁盤上,但透明地操作,就好像它們直接在數據庫字段中一樣。減少對數據庫的負載並限制數據庫爆炸式增長,特別是如果您利用NTFS流訪問這些文件。

An Introduction to SQL Server FileStream

0

不建議大文件/圖片存儲在數據庫中,但你可以。對於那種使用類型varbinary的列。

從SQL Server 2008起,您還可以將BLOBs =文件保存在磁盤上,但仍然有SQL服務器在filestream storage attribute的幫助下引用它們。您可以查看性能差異的基本信息here

+0

除非我知道所有圖像都很小,否則我會傾向'image' over'varbinary'。 'varbinary'在最大尺寸方面受到限制。 – 2010-09-27 13:08:16

+0

我不認爲這是真的喬恩 - 圖像字段被棄用,並完全取代varbinary,也看到這個線程:http://stackoverflow.com/questions/47203/sql-server-nvarcharmax-or-ntext-image-or -varbinary – BrokenGlass 2010-09-27 14:21:42

+0

啊是的。我們都是對的,2005年的形象,因爲我說,varbinary(MAX)2008年的原因你說。除非querant實際上使用Oracle的Postgres或其他東西,在這種情況下,我們都錯了:) – 2010-09-27 15:34:07