php安全和可扩展的文件管理

时间:2013-03-05 16:07:54

标签: php mysql file upload

我有一个用UserCake和PHPMyEdit开发的PHP网站,我的数据存储在MySQL中。 现在我想要以一种我可以控制不同用户的访问权限的方式上传PDF文件,并且该解决方案也必须适用于大量文件上传。

我想知道将MySQL文件存储在MySQL中是一个很好的解决方案吗?

如果不是什么是最好的和现成的解决方案?

THX,

2 个答案:

答案 0 :(得分:3)

在数据库中存储二进制文件通常不是一个好主意。

存储在数据库中的优点:

  • 它允许您利用数据库的安全机制
  • 在数据库中存储blob也意味着您永远不必担心重复的文件名。
  • 还意味着当上传出错时,您可以回滚一个事务,您不必四处寻找损坏的文件并从磁盘中删除它们。

存储在数据库中的缺点:

  • 你必须序列化要写入和反序列化的文件才能读取它们,这比写入/读取文件慢得多;
  • 更高的内存使用率(想象一下,使用blob加载一个带有多行的结果集)
  • 会使您的数据库备份非常,非常繁重和缓慢。
  • Blob通常以4kb的块的形式传输到数据库,这将为你的文件带来大量的开销。

从数据库中检索文件路径并将文件直接传输给用户通常会更快。

编辑:我考虑过了,并提出了在数据库中存储的两个优点。只需编辑扮演魔鬼的拥护者,给你所有的信息,让你自己决定哪种方法更适合你的情况。

答案 1 :(得分:0)

您可以在数据库中保留pdf的相对路径。这样,您就可以避免DB上的所有开销。

如果您要存储PDF本身,必须有充分理由证明这一点。