Я разрабатываю простой скрипт загрузки php, и пользователи могут загружать только файлы ZIP и RAR.
Какие типы MIME я должен использовать для проверки $_FILES[x][type]
? (полный список, пожалуйста)
Спасибо..
php
zip
mime-types
rar
mrdaliri
источник
источник
Ответы:
Ответы от Liberceace, Кияраша и Сэма Флёберга:
Я бы тоже проверил имя файла. Вот как вы можете проверить, является ли файл файлом RAR или ZIP. Я проверил это, создав быстрое приложение командной строки.
Обратите внимание, что он все еще не будет на 100% уверен, но, вероятно, достаточно хорош.
Но даже WinRAR обнаруживает не RAR-файлы как SFX-архивы:
источник
application/x-zip-compressed
zip
илиrar
файл вообще. В соответствии со спецификациями WC3 это будет интерпретироваться как: «Я предпочитаюapplication/zip
|application/x-rar-compressed
тип контента, но если вы не можете доставить это,application/octet-stream
(файловый поток) тоже подойдет».multipart/x-zip
быть возможно? Это не из нескольких частей. Список SitePoint содержит много неточных типов MIME, и он далеко не полный. Официальный реестр IANA Media Types не заполнен (и, скорее всего, никогда не будет) заполнен на 100%.Для загрузки:
Официальный список типов пантомимы можно найти в Управлении по присвоению номеров в Интернете (IANA) . Согласно списку их
Content-Type
заголовкуzip
ISapplication/zip
.Тип носителя для
rar
файлов официально не зарегистрирован в IANA, но неофициальное обычно используемое значение mime-type -application/x-rar-compressed
.application/octet-stream
означает столько, сколько: «Я отправляю вам поток файлов, а содержимое этого потока не указывается» (поэтому верно, что это может быть файлzip
илиrar
файл). Предполагается, что сервер обнаруживает фактическое содержимое потока.Примечание: для загрузки небезопасно полагаться на тип пантомимы, установленный в
Content-Type
заголовке. Заголовок устанавливается на клиенте и может быть установлен на любое случайное значение. Вместо этого вы можете использовать функции информации о файле php, чтобы обнаружить mime-тип файла на сервере.Для скачивания:
Если вы хотите загрузить
zip
файл и ничего больше, вы должны установить только одноAccept
значение заголовка. Любые дополнительные значения будут использоваться в качестве запасного варианта на тот случай, если сервер не сможет удовлетворить вашAccept
запрос в заголовке mime-type.Согласно спецификации WC3 это:
будет интерпретироваться как: «Я предпочитаю
application/zip
mime-тип, но если вы не можете доставить это, тоapplication/octet-stream
(файловый поток) тоже подойдет».Так что только один:
Гарантирует вам
zip
файл (или406 - Not Acceptable
ответ, если сервер не сможет удовлетворить ваш запрос).источник
Вы не должны доверять
$_FILES['upfile']['mime']
, проверьте тип MIME самостоятельно. Для этого вы можете использоватьfileinfo
расширение , включенное по умолчанию в PHP 5.3.0.ПРИМЕЧАНИЕ. Не забудьте включить расширение
php.ini
и перезапустить сервер:источник
В связанном вопросе есть некоторый код Objective C, чтобы получить тип mime для URL файла. Я создал расширение Swift на основе этого кода Objective C, чтобы получить тип MIME:
источник
Поскольку расширение может содержать более или менее трех символов, следующие будут проверять расширение независимо от его длины.
Попробуй это:
проверить все символы после последнего '.'
источник