将上传的文件存储在服务器上

时间:2018-11-04 20:48:08

标签: php file-upload

我不知道如何在服务器上存储上载的文件。例如,我是否应该始终将上传的文件重命名为458783576487365934之类的随机字符串,并始终将文件存储在同一文件夹中?例如,如果我存储pdf文档或图像,是否将所有pdf都放在同一个文件夹中(但具有随机名称,以便我可以上传具有相同名称的文档)?如果这样做,例如,当用户转到URL /files/458783576487365934时,我希望下载的文件具有其原始名称,而不是真实的存储名称,而是如何?

我可以将路径和原始名称存储在数据库中,但是当我们转到/files/458783576487365934时如何告诉浏览器其真实姓名?

(我不在乎上传的实际过程,我了解$ _FILES,无论如何我都使用Symfony)

1 个答案:

答案 0 :(得分:1)

  1. 您应将原始名称存储在数据库中。
  2. 您不应该使用原始名称存储文件,因为这是不安全的。使用服务器生成的名称。
  3. 您可以借助HTTP标头(header功能)告诉浏览器文件名:

header('Content-disposition: inline; filename="original_name.pdf"');

  1. 要保留数百万个文件时,应将文件存储在不同的目录中。尝试访问目录中的数据时,目录中的每个新文件都会降低I \ O操作的性能。