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


Getting mime type from uploading files - inconsistent

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

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

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

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

谁能建议我是否可以从 $_FILES 中获得更准确的报告类型,或者它是否必须在本地加载才能运行这些替代 PHP 函数?

finfo是唯一

的方法。你不能依赖客户发送给你的信息,从客户端伪造太容易了。

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