Как мне справиться с проверкой MIME-типа загруженного ZIP-файла в среде Linux и Windows?
Я создал ZIP-файл для целей тестирования, скачал еще один (первый результат Google) и использовал их в качестве аргументов следующего кода:
$finfo = new finfo( FILEINFO_MIME );
echo $finfo -> file( 'benchmark.zip' ), '<br />', $finfo -> file( 'css3menu.zip' ), '<br />';
echo mime_content_type( 'benchmark.zip' ), '<br />', mime_content_type( 'css3menu.zip' );
Он сообщил мне:
application/zip; charset=binary
application/zip; charset=binary
application/zip
application/zip
В обеих средах: Linux, использующий Apache, и Windows, со встроенным веб-сервером PHP.
После прочтения этот ответ Я тоже считала Применение / октет-поток как действительный, поэтому я добавил их обоих в свой обработчик загрузки.
Но загрузка не удалась, сообщив о неверном типе файла 🙁
Я проверил все, и это было правильно, поэтому я решил изолировать проблему с самой простой возможной реализацией загрузки (вместе с этим кодом отладки):
if( isset( $_POST['button'] ) ) {
print '<pre>'; print_r( $_FILES );
$finfo = new finfo( FILEINFO_MIME );
echo $finfo -> file( 'benchmark.zip' ), '<br />', $finfo -> file( 'css3menu.zip' ), '<br />';
echo mime_content_type( 'benchmark.zip' ), '<br />', mime_content_type( 'css3menu.zip' ), '<br />';
}
?>
<form enctype="multipart/form-data" action="http://localhost/test.php" method="post">
<input type="file" name="file[]" id="file" />
<input type="submit" name="button" value="Send" />
</form>
Тип MIME, сообщаемый FileInfo и mime_content_type (), был таким же, как и раньше, но тип возвращен индекс в $ _FILES Приложение / vnd.zend.serverconfig в среде Linux и менее желательным, хотя и действительным, Применение / октет-поток в винде.
Есть идеи, почему это происходит?
Стоит отметить, что я новичок в среде Linux, поэтому я не знал, как настроить веб-сервер, поэтому сначала я установил Zend Server, но позже я полностью удалил его и переустановил все вручную, используя apt-get.
После понимания того, что тип индекс предоставляется браузером, а не PHP, я протестировал в Google Chrome и получил правильный Применение / застежка-молния
Поэтому я решил, как Google решить эту проблему в Firefox, браузере, который я тестировал ранее, и все, что мне нужно было сделать, это удалить mimeTypes.rdf файл в папке профиля, расположенной в ~ / .Mozilla / светлячок /
Других решений пока нет …