2013-08-12 2 views
1

Переменные:если (in_array) проверка мим всегда возвращает FALSE

$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?

+0

Что делает var_dump ($ csvFile) перед вызовом in_array? – Maximus2012

+0

Скорее всего, $ csvFile предоставит вам фактическое имя файла, а не тип mime для этого файла, что вы пытаетесь сделать с помощью in_array. – Maximus2012

+0

@ Maximus2012 string (26) "D: \\ xampp \\ tmp \\ phpAC6.tmp" – Gjorg

ответ

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

вы должны искать в 'типа' не 'tmp_name'

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

Однако есть SO discussion here о том, почему CSV-файл может иметь application/octet-stream типа пантомимы. Это предполагает, что вам нужно проверить тип файла самостоятельно, а не полагаться на ['type']. Лучше всего было бы использовать fgetcsv(), чтобы попытаться разобрать его как csv. Если это не удается, предположите, что это не csv.

+0

точно такая же вещь происходит – Gjorg

+0

Печать или эхо-сигнал ['type'], чтобы узнать, что это такое. –

+0

application/octet-stream – Gjorg

Смежные вопросы