用户文件上载存储的最佳实践

时间:2012-12-26 14:27:12

标签: php mysql database-design file-upload

我们刚刚在内部建立了一个基于PHP / MySQL的开源软件解决方案,几乎所有软件解决方案都按照我们想要的方式工作,但文件上传并不是我们想要的。目前,它处理“上传”的唯一方法是存储/显示远程URL,但我们需要保持内部。

是否有关于如何存储上传的用户文件的最佳做法?它们应该存储在文件系统还是数据库中?每种方法的优缺点是什么?如果已经使用PHP和MySQL,是否更容易实现?是否有更好的混合方法?

1 个答案:

答案 0 :(得分:7)

我通常会做的广泛概述:

  1. 将文件本身存储在文件系统中,而不是存储在数据库中。数据库擅长存储数据,文件系统擅长存储文件。最好将每一个用于他们擅长的事情,即使你能做到不同(我的意见)。

  2. 将文件存储在Web根目录之外。这样可以更容易地控制对它们的访问。

  3. 由于它们位于您的Web根目录之外,您现在无法直接链接到文件,因此请创建一个脚本来自行提供文件。您可以将数据库中的某种文件标识符传递给脚本,脚本将查找数据库中文件的实际路径,然后提供文件的内容。如有必要,该脚本还可以进行用户访问检查。