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

4
我们刚刚内部搭建了一个基于PHP/MySQL的开源软件解决方案,几乎所有功能都已经达到我们需要的水平,但是文件上传不太理想。目前,它唯一处理“上传”的方式是存储/显示远程URL,但我们需要保持内部控制。
关于如何存储上传的用户文件,有没有最佳实践?它们应该存储在文件系统中还是数据库中?每种方法的优缺点是什么?鉴于已经使用了PHP和MySQL,哪种方法更容易实现?是否有更好的混合方法?

2
理想情况下,您应该将文件存储在文件系统中,并创建数据库条目以存储上传者信息、实际文件路径和时间戳。这样,您可以更轻松地索引所有文件、搜索和删除。 - phpisuber01
3
@phpisuber01 说这样的笼统回答并不有用。 - Ja͢ck
相关:https://dev59.com/g3RC5IYBdhLWcg3wSu97 - Kzqai
1个回答

7

我通常会做以下几点:

  1. 将文件本身存储在文件系统中,而不是数据库中。数据库适用于存储数据,文件系统适用于存储文件。最好使用它们各自擅长的领域,即使你可以用不同的方式来处理(这是我的观点)。

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

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


关于问题 #3,值得一看的是 早期的答案,可以减少在提供文件时 PHP 处理的时间。 - Ja͢ck
此外,虽然这种方法最常用,但列出其优缺点会更有帮助。 - Ja͢ck
也许可以简单解释一下这个神奇的脚本——特别是如果文件不能直接从页面访问,如何从所述的文件查找脚本中访问它。 - Andrew
@Andrew - 这将是一个服务器端脚本,而不是JavaScript。因此,它应该能够访问Web服务器正在运行的用户帐户可用的任何文件(当然,这取决于您使用的语言/ Web服务器的服务器端)。 - Eric Petroelje

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接