我正在尝试使用"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\"' ";
}
你读这篇文章的时候,谢谢。
我发现问题是我在数组中使用的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类型选项。
因此,验证错误发生,因为脚本期望.rtf
与text/rtf
file相关联。
在我更改.rtf
的键值而不是text/rtf
or application/msword
后,脚本按预期工作。
现在我发送使用phpmailer进行mime验证的附件。
感谢所有试图以某种方式提供帮助的人。