C# 在sql中存储和检索动态创建的pdf

C# 在sql中存储和检索动态创建的pdf,c#,sql,pdf,C#,Sql,Pdf,我一直在为我正在从事的一个项目创建pdf文档。我想将生成的pdf文档存储在SQL数据库中,然后稍后也可以检索此pdf 对此有什么建议?是否可以将文档存储在数据库中而不在服务器上实际创建文档 有什么建议吗 这文档是否可以存储在 数据库没有物理上的限制 在服务器上创建文档 当然,只需将pdf创建为字节流(byte[]),并将其存储在数据库中。根据您用来创建它的内容,您不必将它写入文件系统 事实上,关于在哪里存储它的争论。如果您使用的是SQL server 2008,则需要使用它。它将文件存储在文件系

我一直在为我正在从事的一个项目创建pdf文档。我想将生成的pdf文档存储在SQL数据库中,然后稍后也可以检索此pdf

对此有什么建议?是否可以将文档存储在数据库中而不在服务器上实际创建文档

有什么建议吗 这文档是否可以存储在 数据库没有物理上的限制 在服务器上创建文档

当然,只需将pdf创建为字节流(
byte[]
),并将其存储在数据库中。根据您用来创建它的内容,您不必将它写入文件系统


事实上,关于在哪里存储它的争论。如果您使用的是SQL server 2008,则需要使用它。它将文件存储在文件系统中,但您可以通过数据库访问它,就像访问任何其他数据一样。您可以两全其美。

将PDF另存为
字节[]
,然后您可以在准备查看时使用
itextsharp
创建PDF。

这将再次引发支持/反对将内容存储在文件系统或sql server本身中的辩论

这真的取决于你的需要,你期望的大小,等等。这里有一些参考资料,每个都有更多的参考资料


请记住,SQL Server 2008现在具有
FILESTREAM
数据类型。您可以将数据写入文件系统,但仍将其存储在列中。

您可以使用这样的表在SQL Server中存储文件

CREATE TABLE [Documents]
(
    [FileName] nvarchar(1000),
    [FileContent] varbinary(max)
)

有两种方法可以做到这一点:

  • 存储在FileServer中,并将文件名存储在数据库中
  • 对文件进行编码并存储在数据库中
  • 我建议您使用第二个..
    我为什么选择这个答案??为了安全

    原因有很多: 举个小例子:

    • 如果您做了第一步(将文件存储在文件服务器中…),您将 正在数据库中装入文件夹。。因此,您的服务器将易受攻击 针对攻击或病毒

    • 如果你做第二个。该文件将被编码并存储在数据库中 而且你不必担心攻击或机器感染

    我认为这是为什么不使用第一种方法的一个简单原因