Простой вопрос. Есть ли способ разрешить только txt-файлы при загрузке? Я огляделся, и все, что я нашел, это text/php
, что позволяет PHP.Ограничение загрузки файлов
$uploaded_type=="text/php
Простой вопрос. Есть ли способ разрешить только txt-файлы при загрузке? Я огляделся, и все, что я нашел, это text/php
, что позволяет PHP.Ограничение загрузки файлов
$uploaded_type=="text/php
Когда вы загружаете файл с PHP, он хранится в массиве $ _FILES. В этом есть ключ называется «тип», который имеет тип пантомимы файла EG $_FILES['file']['type']
Так, чтобы проверить это TXT файл вы
if($_FILES['file']['type'] == 'text/plain'){
//Do stuff with it.
}
Это объясняется очень хорошо here. Кроме того, не полагайтесь на расширения файлов, это очень ненадежно.
Вы должны проверить расширение файла загруженного файла.
Есть Pear HttpUpload, он поддерживает это.
Вы можете проверить тип mime загружаемого файла. В CodeIgniter, этот код используется в библиотеке загрузки:
$this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $_FILES[$field]['type']);
Переменная $this->file_type
затем используется для проверки конфигурации загрузки, чтобы увидеть, если загруженный файл находится в разрешенных типа или нет. Вы можете увидеть полный код в файле библиотеки загрузки CodeIgniter.
Проще говоря: нет способа. Браузеры неизменно поддерживают ограничители типов в полях загрузки файлов (AFAIK, который был запланирован или даже интегрирован в стандарт HTML, но едва ли реализован в лучшем случае). Как расширение файла, так и информация типа mime предоставляются пользователю и, следовательно, нельзя доверять.
Вы можете попробовать только проанализировать файл и посмотреть, проверяется ли он в любом формате, который вы ожидаете, это единственный надежный способ. Вам нужно быть осторожным с переполнениями буфера и т. Д., Вызванными злонамеренно искаженными файлами. Если все, что вам нужно, это текстовые файлы, это, вероятно, не так уж и много.