Возможно ли получить расширение файла, не зная об этом?

У меня есть файл под названием 94bf663a100e848fb599209af8cdc2b5.wmv. Я знаю, что pathinfo не даст мне расширение, если я просто использую имя 94bf663a100e848fb599209af8cdc2b5. Я считаю, что glob предназначен только для проверки наличия файла. Так можно ли получить расширение файла, просто зная имя файла (94bf663a100e848fb599209af8cdc2b5)?

Related of "Возможно ли получить расширение файла, не зная об этом?"

Как показывает пример на странице справочника php glob , glob не просто проверяет, существует ли файл, он возвращает каждый файл, соответствующий выражению.

Ниже приведена модификация примера на этой странице для ваших нужд:

 $name = "94bf663a100e848fb599209af8cdc2b5"; $matching = glob($name . ".*"); $info = pathinfo($matching[0]); $ext = $info['extension']; 

Это предполагает, что есть один (и только один) файл с этим именем (с любым расширением), но вы должны иметь возможность его модифицировать, если файл может не существовать, или может быть несколько файлов с тем же именем и разными расширениями.

Функция finfo_file() проверяет байтовую подпись файла, чтобы вернуть его тип mimetype. Оттуда вы можете в основном вывести правильное расширение файла.

 // Adapted from the PHP docs $finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension echo finfo_file($finfo, $filename); finfo_close($finfo); 

Первые несколько символов файла (двоичные) обычно дают вам какой-то намек на тип файла.

Попробуйте, открыв в «Блокноте» несколько бинарных файлов (rar, zip, mp3 и т. Д.).

Попробуйте функцию mime_content_type() filetype() или mime_content_type() в php … передать путь к файлу, который возвращает тип файла.