Как обработать 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 возвращал application/vnd.zend.serverconfig в среде Linux и менее желательный, хотя и действительный, поток приложений/октетов в Windows,
Любые идеи, почему это происходит?
Одна вещь, о которой стоит упомянуть, я новичок в среде Linux, поэтому я не знал, как настроить веб-сервер, поэтому сначала я установил Zend Server, но позже я полностью удалил его и переустановил все вручную, используя apt-get.
Поняв, что индекс типа предоставляется браузером, а не PHP, я тестировал его в Google Chrome и получил правильное приложение /zip
Поэтому я решил, как решить эту проблему в Firefox, в браузере, который я тестировал раньше, и все, что мне нужно было сделать, это удалить файл mimeTypes.rdf в папке профиля, расположенной в ~/.mozilla/firefox/