if(in_array)mime check总是返回FALSE

时间:2013-08-12 01:24:57

标签: php arrays csv if-statement

变量:

$csvFile = $_FILES['uploadfile']['tmp_name'];
$csvFile = $con->real_escape_string($csvFile);
$mimes = array('application/vnd.ms-excel','text/plain','text/csv','text/tsv','csv');

if声明:

if(in_array($csvFile, $mimes))
{
$file = fopen($csvFile, 'r');
$i = 0;
$row = 1; 
while (($line = fgetcsv($file)) !== FALSE) 
{
if($row == 1){ $row++;  continue; }
$data_array[$i] = $line[0];
$data_array[$i] = mysqli_real_escape_string($con, trim($data_array[$i]));
$encrypted_numbers[$i] = encryption::encrypt($data_array[$i]);
$encrypted_numbers[$i] .= mysqli_real_escape_string($con, trim($line[1]));
$i++;
}
fclose($file);
} 
else 
{
die("Sorry, file type not allowed");
};

我已经尝试了30分钟的东西,任何人都知道为什么即使文件命名为csv.csv我也总是假的?

1 个答案:

答案 0 :(得分:1)

$_FILES['uploadfile']['tmp_name'];

你应该看'type'而不是'tmp_name'

$_FILES['uploadfile']['type'];

但是,有一个SO discussion here关于为什么csv文件可以具有application/octet-stream mime类型。它表明您需要自己验证文件类型,而不是依赖['type']。最好的方法是使用fgetcsv()尝试将其解析为csv。如果失败则假设它不是csv。