PHP文件上传总是返回MIME类型" inode / x-empty"

时间:2016-08-08 12:05:27

标签: php file-upload mime-types

所以我有一个上传条款和功能的功能条件到文件夹。我获取文件的扩展名和MIME类型,并检查它们是否有效。截至最近,我上传的所有文件都将$_FILES[$key]['size']作为0返回,而本地磁盘上的文件确实具有文件大小。当我使用以下脚本检查MIME类型时,它总是返回inode/x-empty

$finfo    = finfo_open(FILEINFO_MIME_TYPE);
$fileType = finfo_file($finfo, $file['tmp_name']); // Returns 'inode/x-empty'
$expl     = explode('.', $file['name']);
$fileExt  = end($expl);

我似乎无法弄清楚为什么会发生这种情况,因为几个月前它还没有发生。我之前从未见过这种情况。

以下是$ _FILES输出的示例:

Array
(
    [name] => audite_marlow_logo.jpg
    [type] => image/jpeg
    [tmp_name] => /tmp/phpcHbiLN
    [error] => 0
    [size] => 0
)

服务器的php.ini能够处理我上传的任何文件。 post_max_size设置为疯狂128M

我上传的所有文件都返回error,整数值为0

我真的很遗憾为什么会这样。

1 个答案:

答案 0 :(得分:0)

因为,你问一个tmp文件名的finfo(phpcHbiLN)然而$_FILE['type']检查上传文件的finfo(audite_marlow_logo.jpg)。 另一方面,finfo需要一条绝对路径,因此sur tmp/phpcHbiLN是绝对路径。

inode/x-empty表示您尝试检查的文件为空,只需检查is_readable()file_exists()is_file()即可恢复您的文件。