2010-09-27 134 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