【问题标题】:PHP file upload always returns MIME type "inode/x-empty"PHP 文件上传总是返回 MIME 类型“inode/x-empty”
【发布时间】:2016-08-08 12:05:27
【问题描述】:

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

我真的不知道为什么会发生这种情况。

【问题讨论】:

  • 快速提问...如果文件大小大于您的 php.ini post_max_size 值,就会发生这种情况。有可能这是原因吗?如果它只是一个小的 jpeg 文件,则极不可能,但值得询问以确保它不是明显的罪魁祸首。
  • @Abela:我的示例中的文件大小为 76kb。我可以在比这大得多的另一个页面上上传图片。
  • Okie,我认为是这样。可能建议试一试:stackoverflow.com/questions/7959615/filesfilesize-returning-0 出现错误,该页面上的代码应该有助于诊断它。
  • @Abela:我上传的每个文件都返回并且错误代码为 0。
  • 您确认$_FILES['file']['error'] 没有返回任何结果吗?参考:php.net/manual/en/features.file-upload.errors.php

标签: php file-upload mime-types


【解决方案1】:

因为,您询问 finfo (phpcHbiLN) 的 tmp 文件名,但是 $_FILE['type'] 检查上传文件的 finfo (audite_marlow_logo.jpg)。 换句话说,finfo 需要一个绝对路径,所以 make sur tmp/phpcHbiLN 是一个绝对路径。

inode/x-empty 表示您要检查的文件是空的,通过简单的检查is_readable()、file_exists() 或is_file() 使您的文件可读。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2012-03-28
    • 2013-01-05
    • 2019-07-08
    • 1970-01-01
    • 2011-11-17
    • 2016-01-25
    相关资源
    最近更新 更多