Сейчас я пытаюсь написать сценарий, который будет принимать только определенные аудиофайлы для загрузки на сервер.
Однако некоторые типы MIME возвращаются как null.
Вот некоторые фрагменты кода:
PHP:
$allowedExt=array('audio/mp4a-latm');
if(isset($_POST))
{
print_r($_FILES);
//ToDo: Limit by File Size
if(in_array($_FILES["fileUpload"]["type"],$allowedExt)){
echo "file type found";
}
else
echo "wrong file type";
}
HTML:
<form action="php/FileUpload.php" method="POST" enctype="multipart/form-data">
Choose a file: <input name="fileUpload" type="file" /><br />
<input type="submit" value="Upload" />
</form>
Результат вышеперечисленное:
Array ([fileUpload] => Array ([name] => 02 Helix Nebula.m4a [type] => [tmp_name] => <removed for space...>))
wrong file type
Из того, что я понимаю, , тип должен возвращать файл MIME. В этом случае «audio/mp4a-latm» для файла .m4a.
Если php корректно возвращает null для файлов .m4a, тогда какой лучший подход обеспечить, чтобы я действительно имел дело с аудиофайлами? Есть ли что-то более определенное, чем просто синтаксический разбор файлов? (убедитесь, что кто-то не изменил расширение текстового документа)
Я не уверен, почему он не возвращает правильный тип файла в вашем случае (возможно, отсутствует что-то простое - оно должно), но если.Тип mime m4a определяется как аудио на сервере (обычно вы можете определить это самостоятельно даже в среде общего хостинга), тогда при выполнении проверки по расширению не так много опасности. Тем не менее, я согласен, что было бы лучше решить проблему. – Ynhockey