5

您将如何将 PDF 文档存储在 MySQL 的字段中?

目前我有一个客户列表,每个客户都有一个证书,其中包含有关他们帐户的信息,他们可以提供给其他公司以证明他们是我们的客户。目前,他们的证书以 PDF 格式导出并通过电子邮件发送给工作人员(客户也获得了物理副本),并且该人的邮箱充满了这些电子邮件。我更愿意将它保存在客户的记录中——允许通过我们内部 CRM 中的客户文件访问它。

我考虑将 PDF 放在一个文件夹中并将它们的位置存储为varchar客户的记录,但如果 PDF 被移动/删除/等。然后我们上了一条小溪。

我的理解是 a BLOBorMEDIUMBLOB是我用来存储它的字段类型,但我在这方面有点无知。我不确定如何在字段中存储类似的东西(给它什么 C# 数据类型),然后如何获取它并通过 PDF 阅读器打开它。

4

4 回答 4

5

把它放在数据库中,但BLOB数据类型可能不会削减它。通常MEDIUMBLOB就足够了。

MySQL 数据类型

BLOB, TEXT                L + 2 bytes, where L < 216
MEDIUMBLOB, MEDIUMTEXT    L + 3 bytes, where L < 224
LONGBLOB, LONGTEXT        L + 4 bytes, where L < 232

我已经使用了几次,效果非常好。确保也保存文件大小,因为这样更容易检索它。不确定它是否适用于 C#,就像它适用于 PHP 一样。

如果使用带参数的准备好的语句,数据将自动转义 AFAIK。

此外,我看不出为什么数据库本身在将此类数据存储在其中时会变慢的真正原因。主要的瓶颈当然是数据的传输。此外,MySQL 有时会限制查询的最大长度,尤其是响应。

一旦你运行它,它就非常整洁,尤其是在处理大量小文件时。对于少量大文件,这种做法没有意义,最好使用一些备份系统来处理移动/删除的文件。

于 2009-11-09T12:18:00.713 回答
1

http://www.phpriot.com/articles/images-in-mysql是一个很好的教程,有一些背景信息,以及在 MySQL 中存储图像的实现

于 2009-06-11T21:18:51.153 回答
0

老实说,我认为使用链接而不是将文件实际插入数据库是最好的方法。这样做会使数据库变得非常慢,而且麻烦多于其价值。

我会将文件上传到指定的文件夹,如“证书”,并让证书名称与客户编号一起使用,以便轻松查找和编辑、删除等。我见过人们将图像存储在数据库中,但即使这样也被建议不要这样做。

如果您希望的方法绝对是必须的,请查看这篇文章:

http://www.wellho.net/mouth/1001_-pdf-files-upload-via-PHP-store-in-MySQL-retrieve.html

它解释了如何在 mySQL 数据库中存储和检索 .pdf 文件。

祝你好运!

于 2009-06-11T21:17:25.383 回答
-2

我考虑将 PDF 放在一个文件夹中,并将它们的位置作为 varchar 存储在客户的记录中,但如果 PDF 被移动/删除/等。然后我们上了一条小溪。

这就是我会采取的方法。然后使用一些逻辑可能是一些 BPEL 类型的东西 - 检测是否有任何文件移动/删除并触发您的数据库的触发器以正确更新位置/删除位置

于 2009-06-11T21:16:44.807 回答