【问题标题】:General solution for saving and retrieving different files in sql server在sql server中保存和检索不同文件的通用解决方案
【发布时间】:2014-04-07 06:35:29
【问题描述】:

我知道如何将图像存储到 db(将它们转换为 byte[] 然后保存)以及检索(从 db 中选择 byte[] 并使用图像方法从 byte[] 创建图像)。到目前为止我很酷,但是如何将 PDF 保存/检索到数据库? .doc.mp3.exe.ppt 文件呢?

是否有一种通用的方法可以在 sql server 中保存和检索文件?最糟糕的部分是检索,假设我们找到了一种将任何文件保存到 sql server 的方法,现在我们如何从 db 重建文件?保存前不知道文件扩展名是什么?

【问题讨论】:

    标签: c# .net sql-server file stream


    【解决方案1】:

    嗯,一般来说,将实际文件保存到数据库被认为是不好的做法。 部分原因是您在帖子中提到的问题,更大的部分是直接将文件保存到数据库的开销很大(例如将图像转换为字节数组并返回)。

    处理文件和数据库的简单(并且在大多数情况下推荐)方法是将文件直接保存到文件系统中,并将路径与其他文件相关数据(例如上传的用户 ID)一起保存在数据库中文件。

    这样您就不必担心制动和重建文件,只需将它们发送到服务器并按原样返回给用户。

    请记住,不建议保留文件的完整路径,只保留相对路径。

    我通常所做的是将用户的所有文件保存在服务器本身或用户的计算机上(在桌面应用程序中)。在任何一种情况下,都有一个只有读/写权限的专用文件夹(切勿让用户将文件保存到具有执行权限的目录中!),并保持此目录的路径数据库或网站/应用程序/网络服务的配置文件中的“常规参数”表。

    【讨论】:

      【解决方案2】:

      嗯,文件属性(名称、扩展名、作者等)通常以关系方式保存在 SQL Server 内部的表中。文件本身应保存在 SQL Server 数据库中,具体取决于 SQL Server 版本和文件大小。对较大的文件使用 FILESTREAM 或 FILETABLES 功能,对较小的文件使用 VARBINARY(MAX)。

      无论是图像、doc 还是 pdf 都没有关系——如果您将汽车读入 FileStream,则可以将其保存到数据库中。

      将文件存储在数据库中的优点是简化了管理、备份、安全性和完整性。使用 FILESTREAM 和 FILETABLES 功能,访问文件几乎就像在文件系统上一样,使用 .NET 中的 SqlFileStream 对象。

      在这里查看更多:

      http://technet.microsoft.com/en-us/library/gg471497.aspx

      这里:

      http://technet.microsoft.com/en-us/library/ff929144.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多