从上传文件获取mime类型 - 不一致

时间:2012-06-06 15:27:23

标签: php mime-types uploading

我有一个脚本,主要基于从jQuery Uploader上传PHP文件的示例。它使用以下代码获取文件类型(它获取此$ _FILES组件)...

$fileType = (isset($_SERVER['HTTP_X_FILE_TYPE']) ? $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type']);

请注意; $ upload ['type']来自$ _FILES ['files'] ['type']。

现在,这很好 - 除了一些文件似乎没有来自此文件类型的信息。我可以通过在PHP中使用file info和mimetype函数获得更准确的响应 - 但它们不能用于$ _FILES对象,而且我在将文件传输到s3之前尝试进行此检查,所以我不这样做真的想在本地加载它。

任何人都可以建议我是否可以从$ _FILES更准确地获取报告类型,还是必须在本地加载才能运行这些替代PHP函数?

1 个答案:

答案 0 :(得分:1)

finfo唯一的方式。您无法依赖客户端发送给您的信息,从客户端伪造它太容易了。

没有理由不能使用$_FILES,您只需将$_FILES['files']['tmp_name']作为文件路径传递 - 这仍然是一个有效的文件路径,您无需调用move_uploaded_file()访问数据。将文件保留在临时位置还具有以下优点:如果您没有对其执行任何操作,则在脚本完成时将销毁该文件。