代码之家  ›  专栏  ›  技术社区  ›  PassionateDeveloper

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

  •  2
  • PassionateDeveloper  · 技术社区  · 15 年前

    在我的新C.NET 3.5 ASP网站上,用户可以上传图片。

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

    3 回复  |  直到 15 年前
        1
  •  2
  •   Jon Hanna    15 年前

    Pro文件:

    1. 有一个简单的调用来向响应流提供文件。只需适当地设置ContentType,调用它,就完成了。
    2. 它的性能更高(尽管这通常被夸大了,但是对blob或sqlserver文件流的良好使用往往会表现得相当好,但与文件操作相比仍然会失败)。

    专业数据库:

    1. 一致性更容易,您不能遇到文件结构和数据库不匹配的情况。
    2. 如果您移动到具有多个Web服务器的Web场解决方案,那么基于文件的解决方案是很棘手的(在一定程度的成功之后,您必须这样做)。
    3. 由于修改而迁移数据通常更容易。无论如何,您必须将数据库数据移动到某个地方,所以一旦您解决了问题,您也解决了图像的问题。
    4. 操作代码更容易编写。
    5. 报告整个图像集合更容易。
        2
  •  0
  •   user151323    15 年前

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

    你可以这样做,或者…

    您可以利用SQL Server 2008中的文件流功能。

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

    An Introduction to SQL Server FileStream

        3
  •  0
  •   BrokenGlass    15 年前

    不建议在数据库中存储大型文件/图片,但可以。为此,请使用类型为的列 可变长度 .

    从SQL Server 2008开始,您还可以将blobs=文件保存在磁盘上,但SQL Server仍然可以在 filestream storage attribute . 您可以检查性能差异的基本信息 here .