2010-05-25 3 views
0

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

$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 все время, так что я хочу знать тип содержимого изображения я собираюсь получить в $ файле. Как это сделать

ответ

5

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

0

Эй, по ссылке ниже вы может увидеть значение Content-Type, что вам нужно:

Internet Media Type

Там просто слишком много, чтобы перечислить здесь Ladislav

+0

... Я думаю, что он имел в виду программно ... –

2

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

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

0

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

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

$type = filetype($file); //to know the type 
+0

Это просто вернет «файл» для всех ваших файлов. Не то, что вы хотите. – Chris

+0

Да, я только что заметил. Я использовал приложение/октет-поток, как было предложено – Starx

0

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

Смежные вопросы