C ++ constexpr
constexpr uint64_t fact(uint32_t n)
{
return (n==0) ? 1:n*fact(n-1);
}
Причина, по которой браузеры фактически не реализуют атрибут ACCEPT
, заключается в том, что проверка типа MIME - это наука, а не просто чтение расширения файла. Даже проверка типа MIME на стороне сервера может быть трудной, как отмечает MediaWiki:
http://www.mediawiki.org/wiki/Manual:Mime_type_detection
Обратите внимание, что они пытаются проверить тип MIME даже на стороне сервера.
Самая педантичная причина состоит в том, что не требуется спецификацией HTML4 (выделено мной):
Этот атрибут определяет разделенный запятыми список типов контента, которые сервер, обрабатывающий эту форму, будет обрабатывать правильно. Пользовательские агенты могут использовать эту информацию для фильтрации несоответствующих файлов, когда предлагают пользователю выбрать файлы для отправки на сервер.
Это дополнительная функция.
Мне лично хотелось бы увидеть этот. Например, если задано image / *
, браузер может открыть библиотеку фотографий пользователя по умолчанию и использовать большие значки. text / *
может перейти в папку с документами и т. Д. Мобильные браузеры, такие как iPhone, которые обычно вообще не разрешают загрузку файлов, можно использовать это, чтобы вызвать галерею, когда форма ожидает изображение. Мы могли сходить с ума и при желании подключиться к сканеру. Возможности безграничны.
Однако эта функция используется не часто, и диалоговые окна загрузки файлов могут работать по-разному в зависимости от того, что поддерживает веб-сайт.
Поддержка этого тега означала бы реализацию браузером способа определения MIME-типа локального ресурса, и это повлечет за собой изрядное количество эвристик и возможное воздействие инъекции кода и / или других уязвимости, в которых браузеры уже имеют свою долю.