Как узнать тип файла, который вы заставляете пользователя загружать? - PullRequest
0 голосов
/ 25 мая 2010

Я пытаюсь заставить пользователя загрузить файл. Для этого мой сценарий:

$file = "file\this.zip";        
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip"); //This is what I need
header("Content-Transfer-Encoding: binary");
readfile($file);

Файлы, которые я собираюсь загрузить, не должны быть .zip все время, поэтому я хочу знать тип содержимого изображения, которое я собираюсь получить в $ file Как это сделать

Ответы [ 5 ]

5 голосов
/ 25 мая 2010

Я всегда ставлю application/octet-stream (или что-то вроде этого), поскольку браузер не может затем попытаться отобразить его каким-либо образом, он всегда заставит пользователя сохранить / запустить, тогда тип файла часто определяется расширение.

2 голосов
/ 25 мая 2010

Для изображений наиболее надежным является getimagesize () . Для любого другого типа функции Fileinfo являются правильными.

Я повторяю то, что говорит ck: при форсировании загрузки octet-stream - лучший выбор, чтобы не открывать вещи в браузере или соответствующем клиентском приложении.

0 голосов
/ 25 мая 2010

Вам нужно отправить mime-type туда. Вы можете получить это в PHP с помощью функции mime_content_type. Также имеется расширение Fileinfo , которое обеспечивает способ получения большого количества информации о файле, включая тип mime.

0 голосов
/ 25 мая 2010

Хорошо, я сделал это сам.

Я использовал

$type = filetype($file); //to know the type
0 голосов
/ 25 мая 2010

Эй, по ссылке ниже вы можете увидеть значения необходимого вам Типа контента:

Тип интернет-медиа

Их слишком много длясписок здесь Ладислав

...