Ошибка с $ _FILES ["file"] ["type"] для файлов flv - PullRequest
2 голосов
/ 20 октября 2011

У меня проблемы с проверкой типа файлов flv с помощью php. Вот мой код

if($_FILES["file"]["type"] == "video/x-flv")
{ echo "true"; }
 else{ echo "false"; }

Но моя проблема в том, что когда я загружаю FLV, он попадает в операторы else ... Я не могу понять проблему .. Пожалуйста, помогите ..

EDITED-> Имея ту же проблему для

($_FILES["file"]["type"] == "application/x-shockwave-flash")

также .. пока он отлично работает для изображений ..

Ответы [ 4 ]

2 голосов
/ 20 октября 2011

Использование finfo_file();

Попробуйте

$finfo = finfo_open(FILEINFO_MIME_TYPE); 
if (finfo_file($finfo, $filename) == "video/x-flv" ){}

Возможно, сам файл не является допустимым FLV-файлом.

Edited.

1 голос
/ 09 июня 2013

Вы можете использовать функции gettype () или finfo для получения типа файлов.

1 голос
/ 20 октября 2011

Проверка расширения имени файла так же небезопасна, как и доверие $_FILES["file"]["type"] - они ОБА установлены на стороне клиента.Единственное надежное решение - использовать fileinfo .

1 голос
/ 20 октября 2011

1-й : Вы уверены, что $_FILES["file"]["error"] - ноль?Если нет, проверьте Объяснение сообщений об ошибках .Обычно самой распространенной ошибкой является отсутствие enctype="multipart/form-data" в теге form на странице загрузки.

2nd : Никогда не доверяйте $_FILES["file"]["type"].Это дается браузером.Вы можете проверить расширение имени файла.

if (strtoupper(substr($_FILES["file"]["name"], -4)) == ".FLV") {
    ...
}
...