Узнать тип файла при скачивании по ссылке

204
11 мая 2018, 10:38

Есть ссылка типа https://site.com/docs/2342. По этой ссылке лежит файл с неизвестным расширением (.doc, .rar, .xls или какое-нибудь другое).

Скачиваю его следующим образом

file_put_contents("documents/doc1", file_get_contents("https://site.com/docs/2342"));

В итоге я получаю в папке documents файл с названием doc1.

Каким образом я могу узнать расширение скачиваемого файла, чтобы правильно его сохранить?

Answer 1

Вы можете попробовать найти нужную информацию в заголовках ответа:

$content = file_get_contents("https://site.com/docs/2342");
var_dump($http_response_header);

Также можно воспользоваться функцией finfo_buffer

$content = file_get_contents("https://site.com/docs/2342");
$finfo = new finfo(FILEINFO_MIME_TYPE);
$type =  $finfo->buffer($content);

Вы получите mime-тип (навроде application/xml; charset=utf-8).

Далее, манипулируя строкой либо по словарю известных вашему приложению mime-типов получаете расширение для сохранения.

READ ALSO
последовательное скачивание файлов

последовательное скачивание файлов

не могу разобраться со скачиванием файловНужен скрипт для последовательного скачивания 2х файлов

189
Постраничный вывод без mysql [требует правки]

Постраничный вывод без mysql [требует правки]

Как реализовать постраничный вывод php без mysql

169
Добавить класс и удалить при повторном клике

Добавить класс и удалить при повторном клике

Нужно, чтобы при клике на checkbox добавлялся класс checkbox_active, при этом, если я кликну следующий checkbox нужно чтобы с предыдущего не удалился класс,...

202