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

时间:2010-05-20 19:28:10

标签: c# sql pdf

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

这样做有什么建议?文档是否可以存储在数据库中而无需在服务器上物理创建文档?

6 个答案:

答案 0 :(得分:1)

  

有什么建议可做   这个?文件可以存储在   没有物理的数据库   在服务器上创建文档?

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

实际上,关于存储它的位置的争论。如果您有SQL Server 2008,则需要使用它。它会将文件存储在文件系统中,但您可以像使用任何其他数据一样通过数据库访问它。你可以获得两全其美的效果。

答案 1 :(得分:1)

这再次引发了关于在文件系统上或在sql server本身内存储事物的争论。

这实际上取决于您的需求,您所期望的大小等。以下是一些参考文献,每篇参考文献都有更多参考文献。

Storing a file in a database as opposed to the file system?

store image in database or in a system file?

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

  1. 存储在FileServer中并将文件名存储在数据库中。
  2. 对文件进行编码并存储在数据库中。
  3. 我建议您使用第二个..
    为什么我选择那个答案?为安全起见。

    其中一个原因: 一点例子:

    • 如果您执行Firt(将文件存储在文件服务器中......),您就是 装箱数据库上的文件夹..所以你的服务器将容易受到攻击 用于攻击或病毒..

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

    我认为这是一个简单的原因,为什么永远不要使用第一种方式!!!!!