如何在数据库中保存上传的图片?

时间:2010-09-27 12:40:58

标签: c# asp.net file-upload

在我的新c#.net 3.5 ASP网站中,用户可以上传图片。

什么解决方案最适合保存这张照片?我应该将它保存在我的服务器上的文件夹中并保存数据库中的路径,还是应该将图片保存在数据库中?

3 个答案:

答案 0 :(得分:2)

专业档案:

  1. 可以通过简单的调用来将文件提供给响应流。只需适当设置ContentType,调用它,然后就完成了。
  2. 它的性能更高(虽然这经常被夸大,但很好地使用blob或SQLServer文件流往往性能相当,但与文件操作相比仍然会丢失)。
  3. Pro DB:

    1. 一致性更容易,您不能遇到文件结构和数据库不匹配的情况。
    2. 如果您转移到具有多个网络服务器的网络服务器解决方案,基于文件的解决方案很棘手(超过一定的成功率,您将不得不这样做)。
    3. 由于修改而导致的数据迁移通常更容易。无论如何,你将不得不将DB数据移动到某个地方,所以一旦你解决了,你就已经解决了它的图像问题。
    4. 操作代码更容易编写。
    5. 报告整个图像集更容易。

答案 1 :(得分:0)

  

我应该将它保存在我的服务器上的文件夹中,并将路径保存在数据库中

你可以做那样的事情......或者

您可以利用SQL Server 2008中的FILESTREAM功能。

文件将存储在磁盘上,但透明地操作,就好像它们直接在数据库字段中一样。减少对数据库的负载并限制数据库的爆炸性增长,特别是如果您利用NTFS流来访问这些文件。

An Introduction to SQL Server FileStream

答案 2 :(得分:0)

建议不要在DB中存储大文件/图片,但可以。为此,使用 varbinary 类型的列。

从SQL Server 2008开始,您还可以在磁盘上保存BLOBs =文件,但仍然有SQL服务器在filestream storage attribute的帮助下引用它们。您可以检查性能差异的基础here