如何将PDF文档存储在mysql的字段中?
目前,我有一个客户列表,每个客户都有一个证书,其中包含有关其帐户的信息,可以提供给其他公司以证明他们是我们的客户。目前,他们的证书以PDF格式导出,并通过电子邮件发送给工作中的某人(客户也获得了物理副本),并且该人的邮箱中充满了这些电子邮件。我更喜欢将它放在客户的记录中 - 允许通过我们内部CRM中的客户文件访问它。
我考虑将PDF放在一个文件夹中,并将其位置作为varchar存储在客户的记录中,但是如果PDF被移动/删除/等等。然后我们上了一条小溪。
我的理解是,blob或mediumblob是我用来存储它的字段类型,但我在这方面有点无知。我不确定如何在字段中存储类似的内容(c#datatype提供它),然后如何获取它并通过pdf阅读器打开它。
答案 0 :(得分:4)
把它放在数据库中,但是blob数据类型可能不会削减它。中型通常就足够了。
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有时会限制查询的最大长度以及特别是响应。
一旦你运行它,它非常整洁,特别是在处理大量小文件时。对于少量大文件,这种方法没有意义,最好使用一些备份系统来处理移动/删除的文件。
答案 1 :(得分:1)
http://www.phpriot.com/articles/images-in-mysql是一个很好的教程,包含一些背景信息,以及在MySQL中存储图像的实现
答案 2 :(得分:0)
老实说,我认为使用链接而不是实际将文件插入数据库是最好的方法。这样做会使数据库变得非常慢,并且比它的价值更麻烦。
我会将文件上传到指定的文件夹,如“证书”,并使证书名称与客户编号一起使用,以便于查找和编辑,删除等。我看到人们将图像存储在数据库中,但即便如此建议反对。
如果您希望的方法绝对必须,请查看以下文章:
http://www.wellho.net/mouth/1001_-pdf-files-upload-via-PHP-store-in-MySQL-retrieve.html
它解释了如何在mySQL数据库中存储和检索.pdf文件。
祝你好运!
答案 3 :(得分:-2)
我考虑过将PDF放入 文件夹并将其位置存储为 varchar在客户的记录中,但是 如果PDF被移动/删除/等。 然后我们上了一条小溪。
这就是我要采取的方法。然后使用某些逻辑或许某些BPEL类型的东西 - 检测是否有任何文件移动/删除并触发数据库的触发器以正确更新位置/删除位置