如何使用php查看用户上传的文件


How to view files uploaded by user with php?

我有一个脚本,可以让用户在我的网站上上传图片和视频。我需要查看它们,如何设置适当的权限?

chmod("upload/" . $_FILES["file"]["name"], 0755)

这不起作用,我希望这些文件可以在窗口中使用,因为我需要处理这些文件。我该怎么办?

您不需要设置PHP上传的文件的chmod,因为web服务器已经"拥有"了该文件。

处理文件

为了在浏览器中查看它,您需要确保使用类似于以下内容的方法将文件从临时目录移动到上传目录:

// Define where the uploads directory is
$upload_dir = '/var/www/uploads/';
// Define the upload path from $upload_dir
$upload_file = $upload_dir . basename($_FILES['file']['name']);
// Move the tmp uploaded file to the uploads directory
if( !move_uploaded_file($_FILES['file']['tmp_name'], $upload_file) ) {
    // Handle the failure to move the temp file
    echo "File did not upload";
};

您可以通过var转储路径或检查文件是否存在来检查文件是否已移动到适当的位置。

// Is path correct?
var_dump($upload_file);
// Did the file get moved?
var_dump(file_exists($upload_file));

仍然存在问题

如果文件没有上传到服务器,可能会出现一些问题。关于上传陷阱,请参阅此PHP文档页面。总结:

  • 您正试图直接访问该文件,而uploads目录位于您的Web服务器文档根目录之上,因此守护进程无法保存
  • upload_max_filesize默认为2Mb,对于图片/视频来说通常太小。(php.ini)
  • max_execution_time默认为60秒,在连接速度较慢的情况下,如果是大型图片或视频,则可能会超过60秒。(php.ini)
  • 上传较大文件时可能会超过memory_limit。(php.ini)

在php.ini中检查这些,并在需要时增加它们的值以满足您的需要。

另一个需要检查的选项是,上传目录没有因为.htaccess文件mod重写而被阻止提供图像。