2009-11-16 2 views

ответ

4

Когда вы загружаете файл с PHP, он хранится в массиве $ _FILES. В этом есть ключ называется «тип», который имеет тип пантомимы файла EG $_FILES['file']['type']

Так, чтобы проверить это TXT файл вы

if($_FILES['file']['type'] == 'text/plain'){ 
    //Do stuff with it. 
} 

Это объясняется очень хорошо here. Кроме того, не полагайтесь на расширения файлов, это очень ненадежно.

1

Вы должны проверить расширение файла загруженного файла.

Есть Pear HttpUpload, он поддерживает это.

2

Вы можете проверить тип mime загружаемого файла. В CodeIgniter, этот код используется в библиотеке загрузки:

$this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $_FILES[$field]['type']); 

Переменная $this->file_type затем используется для проверки конфигурации загрузки, чтобы увидеть, если загруженный файл находится в разрешенных типа или нет. Вы можете увидеть полный код в файле библиотеки загрузки CodeIgniter.

3

Проще говоря: нет способа. Браузеры неизменно поддерживают ограничители типов в полях загрузки файлов (AFAIK, который был запланирован или даже интегрирован в стандарт HTML, но едва ли реализован в лучшем случае). Как расширение файла, так и информация типа mime предоставляются пользователю и, следовательно, нельзя доверять.

Вы можете попробовать только проанализировать файл и посмотреть, проверяется ли он в любом формате, который вы ожидаете, это единственный надежный способ. Вам нужно быть осторожным с переполнениями буфера и т. Д., Вызванными злонамеренно искаженными файлами. Если все, что вам нужно, это текстовые файлы, это, вероятно, не так уж и много.

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