php 中的 MIME 类型检测有问题
Having trouble with mime type detection in php
我有一个表单可以接受 CVS 文件的上传。
所以我用以下内容保护它:
if (!in_array($mimeType, array("text/csv"))) throw new TMSException("Error");
我的所有测试在我的开发环境中都进行得很顺利,但现在我发现,在 windows 客户端上,对于完全相同的文件,我得到了不同的 mime 类型。
这是我在 Ubuntu PC 上连接时得到的结果:
/var/www/ct/preinvoice.php:203:
array (size=1)
'tariffLines' =>
array (size=5)
'name' => string 'C&T - Labatut.csv' (length=17)
'type' => string 'text/csv' (length=8)
'tmp_name' => string '/tmp/php2vIcaE' (length=14)
'error' => int 0
'size' => int 3812
这就是我尝试从 windows 机器上传相同文件时得到的结果:
/var/www/ct/preinvoice.php:203:
array (size=1)
'tariffLines' =>
array (size=5)
'name' => string 'C&T - Labatut.csv' (length=17)
'type' => string 'application/vnd.ms-excel' (length=24)
'tmp_name' => string '/tmp/phpPaMvN3' (length=14)
'error' => int 0
'size' => int 3812
知道为什么 PHP 检测到同一文件的不同 MIME 类型吗?我该如何解决这个问题?
您可以通过执行以下操作来解决此问题:
$mimetypes = array('application/vnd.ms-excel','text/csv');
if(in_array($_FILES['file']['type'],$mimetypes)){
// do something
} else {
die("MIME type is not allowed");
}
我有一个表单可以接受 CVS 文件的上传。 所以我用以下内容保护它:
if (!in_array($mimeType, array("text/csv"))) throw new TMSException("Error");
我的所有测试在我的开发环境中都进行得很顺利,但现在我发现,在 windows 客户端上,对于完全相同的文件,我得到了不同的 mime 类型。
这是我在 Ubuntu PC 上连接时得到的结果:
/var/www/ct/preinvoice.php:203:
array (size=1)
'tariffLines' =>
array (size=5)
'name' => string 'C&T - Labatut.csv' (length=17)
'type' => string 'text/csv' (length=8)
'tmp_name' => string '/tmp/php2vIcaE' (length=14)
'error' => int 0
'size' => int 3812
这就是我尝试从 windows 机器上传相同文件时得到的结果:
/var/www/ct/preinvoice.php:203:
array (size=1)
'tariffLines' =>
array (size=5)
'name' => string 'C&T - Labatut.csv' (length=17)
'type' => string 'application/vnd.ms-excel' (length=24)
'tmp_name' => string '/tmp/phpPaMvN3' (length=14)
'error' => int 0
'size' => int 3812
知道为什么 PHP 检测到同一文件的不同 MIME 类型吗?我该如何解决这个问题?
您可以通过执行以下操作来解决此问题:
$mimetypes = array('application/vnd.ms-excel','text/csv');
if(in_array($_FILES['file']['type'],$mimetypes)){
// do something
} else {
die("MIME type is not allowed");
}