在使用“finfo”PHP类执行mime / extension验证脚本期间,“rtf”文件扩展名正在消失

问题描述 投票:0回答:1

我正在尝试使用"extension X mime"文件值通过phpmailer创建上传文件的交叉验证,系统正在处理我需要执行此操作的几乎所有文件,但特别是.rtf文件,脚本无法正常工作。

扩展名刚刚消失,如果文件是.rtf,脚本无法获取。我正在使用这个脚本:https://stackoverflow.com/a/33349901/4623271有一些改编。

代码中的贝娄,是变量$ext,我可以获得验证所允许的任何文件的扩展,除了.rtf文件,当文件是.rtf时,变量显然是空的。

我尝试使用$ext = end(explode(".", $_FILES["uploadedFile"]["name"]));但是以同样的方式,当.rtf文件时,变量变空。

    // mime verification
    $finfo = new finfo(FILEINFO_MIME_TYPE);
    if (false === $ext = array_search(
        $finfo->file($_FILES['uploadedFile']['tmp_name']),
        array(
            'doc' => 'application/msword',
            'docx'  => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
            'rtf' => 'application/msword',
            'odt' => 'application/vnd.oasis.opendocument.text',
            'txt' => 'text/plain',
            'pdf' => 'application/pdf',
        ),
        true
    )) {
         $errorMsg .= "<br> Please, watch that the formats allowed are: \"doc\", \"docx\", \"rtf\", \"odt\", \"txt\", \"pdf\"' ";
    }

你读这篇文章的时候,谢谢。

php upload mime rtf
1个回答
0
投票

我发现问题是我在数组中使用的mime值来验证.rtf文件。

$finfo = new finfo(FILEINFO_MIME_TYPE);引导的mime类型不是通常的mime类型,在这种信息的在线表中找到并且我已经习惯于创建初始数组。

在巴西PHP Telegram组寻求帮助后,我收到了分析$finfo变量值的提示。

当我应用var_dump ($finfo->file($_FILES['uploadedFile']['tmp_name']));我发现FILEINFO_MIME_TYPE .rtf文件的mime是:text/rtf而不是application/rtf,正如我上面所说的,是qimexswpoi文件中最常见的mime类型选项。

因此,验证错误发生,因为脚本期望.rtftext/rtffile相关联。

在我更改.rtf的键值而不是text/rtfor application/msword后,脚本按预期工作。

现在我发送使用phpmailer进行mime验证的附件。

感谢所有试图以某种方式提供帮助的人。

© www.soinside.com 2019 - 2024. All rights reserved.