элемент с атрибутом type = "file" позволяет пользователю выбрать один файл или более из файлового хранилища своего устройства. После выбора эти файлы могут быть загружены на сервер при помощи формы или обработаны JavaScript и File API.

    

Значение DOMString представляет собой путь до выбранного файла.
Действия изменить и input
Поддерживаемые атрибуты accept , multiple , обязательно
IDL-атрибуты файлы и value
select ()
Содержание
  1. Value
  2. Дополнительные атрибуты
  3. Использование файловых входов
  4. Базовый пример
  5. Получение информации о выбранных файлах
  6. Ограничение допустимых типов файлов
  7. Примеры
  8. Технические характеристики
  9. Совместимость браузера
  10. См. также
  11. The Wall Street Journal
  12. Маски низкого качества от King Year Printing and Packaging могли подвергнуть опасности американских рядовых рабочих, утверждают прокуроры
  13. Одобренные регулирующим органом респираторы N95 отфильтровывают не менее 95% очень мелких частиц, но маски, произведенные King Year Printing and Packaging Co. Ltd., оказались неэффективными. это стандартно, согласно жалобе.
  14. Продолжайте читать свою статью с членством в WSJ
  15. Самые популярные видео
  16. Наука о том, как коронавирус влияет на мозг
  17. Поддельные вакцины против Covid-19: что нужно знать о поддельных вакцинах, продаваемых в Интернете
  18. Почему офицер полиции Капитолия говорит, что он носил шляпу MAGA во время беспорядков
  19. Коронавирус мутирует. Вот что мы знаем
  20. Видеоанализ: как толпа сторонников Трампа захватила полицию Капитолия

Value

Атрибут value элемента input содержит DOMString , который представляет путь к выбранному файм. Если пользователь выбрал несколько файлов, value представляет первый файл из списка. Отстальные файлы можно определить с помощью HTMLInputElement.files свойство элемента input.

Примечание.
  1. Если выбрано несколько файлов, строка представляет собой первый выбранный файл. JavaScript предоставляет доступ к остальным файлам через свойство FileList .
  2. Если не выбрано доступ к остальному файлам, .строка равна "" ( пустая).
  3. Строка начинается с C: fakepath , для предотвращения определения файловой структуры пользователя вредоносным ПО.

Дополнительные атрибуты

В дополнение к общим атрибутам, общим для всех элементов , входы типа file также поддерживают:

files
A FileList , в котором перечислены все выбранные файлы. В этом списке не более одного члена, если не указан атрибут multiple .

Использование файловых входов

Базовый пример

   
  div {margin-bottom: 10px;}  

Это дает следующий результат:

Примечание : Вы также можете найти этот пример на GitHub — посмотрите исходный код, а также посмотрите, как он работает.

Независимо от устройства или операционной системы пользователя, ввод файла предоставляет кнопку, которая открывает диалоговое окно выбора файла, которое позволяет пользователю выбрать файл.

Включение атрибута multiple , как показано выше, указывает, что можно выбрать сразу несколько файлов. Пользователь может выбрать несколько файлов из средства выбора файлов любым способом, который позволяет выбранная платформа (например, удерживая Shift или Control , а затем щелкнув). Если вы хотите, чтобы пользователь выбирал только один файл для каждого , опустите атрибут multiple .

Когда форма будет отправлена, имя каждого выбранного файла будет добавлено к параметрам URL следующим образом: ?file=file1.txt&file=file2.txt

Получение информации о выбранных файлах

Выбранные файлы ‘возвращаются свойством элемента files , которое является FileList , содержащий список объектов File . FileList ведет себя как массив, поэтому вы можете проверить его свойство length , чтобы получить количество выбранных файлов.

Каждый Объект File содержит следующую информацию:

name
имя файла.
lastModified
Число, указывающее дату и время последнего изменения файла в миллисекундах с момента Эпоха UNIX (1 января 1970 г., полночь).
lastModifiedDate
A Date , представляющий дату и время последнего изменения файла. Это устарело и не должно использоваться. Вместо этого используйте lastModified .
size
Размер файла в байтах.
type
Тип MIME файла.
webkitRelativePath
Строка, определяющая путь к файлу относительно базового каталога, выбранного в средстве выбора каталога (то есть в средстве выбора файла , в котором webkitdirectory ). Это нестандартно и следует использовать с осторожностью.

Примечание : Вы можете установить, а также получить значение HTMLInputElement.files во всех современных браузерах; последний раз это было добавлено в Firefox в версии 57 (см. баг 1384030).

Ограничение допустимых типов файлов

Часто вы не хотите, чтобы пользователь мог выбирать любой произвольный тип файла; вместо этого вы часто хотите, чтобы они выбирали файлы определенного типа или типов. Например, если ваш входной файл позволяет пользователям загружать изображение профиля, вы, вероятно, захотите, чтобы они выбрали веб-совместимые форматы изображений, такие как JPEG или PNG.

Допустимые типы файлов могут быть указаны с помощью accept , который принимает список разрешенных расширений файлов или типов MIME, разделенных запятыми.. Некоторые примеры:

  • accept = "image/png" или accept = ". Png" — Принимает файлы PNG.
  • accept = "image/png, image/jpeg" или accept = ". Png, .jpg, .jpeg " — принимать файлы PNG или JPEG.
  • accept =" image/* " — принимать любые файлы с image/ * Тип MIME. (Многие мобильные устройства также позволяют пользователю делать снимки с помощью камеры, когда она используется.)
  • accept = ". Doc, .docx, .xml, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document " — принимать все, что пахнет документом MS Word.

Давайте рассмотрим более полный пример:

   
  div {margin-bottom: 10px;}  

Это дает результат, похожий на предыдущий пример:

Примечание : вы можете найти это пример на GitHub — посмотрите исходный код, а также посмотрите, как он работает в реальном времени.

Это может выглядеть похоже, но если вы попытаетесь выбрать файл с этим вводом, вы увидите что й Средство выбора файлов позволяет выбирать только те типы файлов, которые указаны в значении accept (точный характер различается в зависимости от браузеров и операционных систем).

Атрибут accept не проверяет типы выбранных файлов; он просто предоставляет браузеру подсказки, которые помогут пользователям выбрать правильные типы файлов. Пользователи по-прежнему могут (в большинстве случаев) переключить параметр в средстве выбора файлов, который позволяет переопределить это и выбрать любой файл, который они хотят, а затем выбрать неправильные типы файлов.

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

Примеры

В этом примере мы представим немного более продвинутый селектор файлов, который использует информацию о файле, доступную в свойстве HTMLInputElement.files , а также показывает несколько умных трюков.

Примечание : вы можете увидеть полный исходный код этого примера на GitHub — file-example.html ( посмотреть и вживую). Мы не будем объяснять CSS; JavaScript — главный фокус.

Прежде всего, давайте посмотрим на HTML:

   

В данный момент файлы для загрузки не выбраны

  html {font-family: sans-serif;} form {width: 600px;  фон: #ccc;  маржа: 0 авто;  отступ: 20 пикселей;  граница: 1px сплошной черный;} форма ol {padding-left: 0;} форма li, div> p {background: #eee;  дисплей: гибкий;  justify-content: пробел между;  нижнее поле: 10 пикселей;  тип-стиль-список: нет;  граница: 1px сплошной черный;} форма img {height: 64px;  порядок: 1;} форма р {высота строки: 32 пикселей;  padding-left: 10px;} метка формы, кнопка формы {background-color: # 7F9CCB;  отступ: 5 пикселей 10 пикселей;  радиус границы: 5 пикселей;  бордюр: гребень черный 1px;  размер шрифта: 0.8rem;  высота: авто;} метка формы: наведение, кнопка формы: наведение {background-color: # 2D5BA3;  цвет: белый;} метка формы: активная, кнопка формы: активная {background-color: # 0D3F8F;  color: white;}  

Это похоже на то, что мы видели раньше — нечего особо комментировать.

Далее, давайте пройдемся по JavaScript.

В первых строках скрипта мы получаем ссылки на сам ввод формы и элемент

с классом .preview . Затем мы скрываем элемент - мы делаем это, потому что вводимые файлы имеют тенденцию быть некрасивыми, сложными для стилизации и непоследовательными по своему дизайну в разных браузерах. Вы можете активировать элемент ввода, щелкнув его , поэтому лучше визуально скрыть ввод и стилизовать ярлык как кнопку, чтобы пользователь знал, что с ним нужно взаимодействовать, если они хотите загрузить файлы.
  var input = document.querySelector ('input'); var preview = document.querySelector ('. preview'); input.style.opacity =  0;  

Примечание. opacity используется, чтобы скрыть ввод файла вместо visibility: hidden или display: none , потому что вспомогательные технологии интерпретируют последние два стиля как означающие, что ввод файла не является интерактивным.

Затем мы добавляем прослушиватель событий к вводу, чтобы отслеживать изменения его выбранного значения (в данном случае, когда файлы выбраны). Слушатель событий вызывает нашу пользовательскую функцию updateImageDisplay () .

  input. addEventListener ('change', updateImageDisplay);  

Каждый раз, когда вызывается функция updateImageDisplay () , мы:

  • Используйте цикл while , чтобы очистить предыдущее содержимое предварительного просмотра
    .
  • Захват объект FileList , содержащий информацию обо всех выбранных файлах, и сохранить ее в переменной с именем curFiles .
  • Проверить чтобы увидеть, не были ли выбраны никакие файлы, проверив, равно ли curFiles.length 0. Если это так, напечатайте сообщение в окне предварительного просмотра
    с указанием что файлы не были выбраны.
  • Если файлы были выбраны, мы перебираем каждый из них, выводя информацию о них в предварительный просмотр . Здесь следует отметить:
  • Мы используем специальную функцию validFileType () , чтобы проверить, имеет ли файл правильный тип (например, типы изображений, указанные в accept attribute).
  • Если это так, мы:
    • Распечатываем его имя и размер файла в элемент списка внутри предыдущий
      (полученный из curFiles [i] .name и curFiles [i] .size ). Пользовательская функция returnFileSize () возвращает красиво отформатированную версию размера в байтах/КБ/МБ (по умолчанию браузер сообщает размер в абсолютных байтах).
    • Создайте предварительный просмотр эскиза изображения, вызвав window.URL.createObjectURL (curFiles [i]) и уменьшив размер изображения в CSS, а затем также вставьте это изображение в элемент списка.
    • Если тип файла недействителен, мы отображаем сообщение внутри элемента списка, сообщающее пользователю, что ему нужно выбрать другой тип файла.
    •   function updateImageDisplay () {while (preview.firstChild) {preview.removeChild (preview.firstChild);  } var curFiles = input.files;  если (curFiles.length === 0) {var para = document.createElement ('p');  para.textContent = 'В данный момент файлы для загрузки не выбраны';  preview.appendChild (параграф);  } еще {var list = document.createElement ('ol');  preview.appendChild (список);  для (var я = 0; я  

      Пользовательская функция validFileType () принимает в качестве параметра объект File , а затем выполняет цикл через список разрешенных типов файлов, проверяя, соответствует ли какой-либо из свойств файла свойству type . Если совпадение найдено, функция возвращает true . Если совпадений не найдено, возвращается false .

        var fileTypes = ['image/jpeg', 'image/pjpeg', '  image/png '] function validFileType (file) {for (var i = 0; i  

      Функция returnFileSize () принимает число (байтов, взятых из текущего файла size ) и превращает его в красиво отформатированный размер в байтах/КБ/МБ.

        function returnFileSize (number) {if (number  1024 && число  1048576) {возврат (число/1048576) .toFixed (1) + 'МБ';  }}  

      Пример выглядит следующим образом; есть игра:

Технические характеристики

Спецификация Статус Комментарий
Уровень жизни HTML
Определение '' в этой спецификации.
Живой стандарт Первоначальное определение
HTML 5.1
Определение '' в этой спецификации.
Рекомендация Первоначальное определение

Совместимость браузера

Мы конвертируем наши данные о совместимости в машиночитаемый формат JSON . В этой таблице совместимости по-прежнему используется старый формат, потому что мы еще не преобразовали содержащиеся в ней данные. Узнайте, чем вы можете помочь!
  • Настольные
  • Мобильные
Функция Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка 1.0 ? 1.0 (1.7 или ранее) (Да) 1.0 1.0
Функция Android Chrome для Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile iOS WebKit
(Safari/Chrome/Firefox/etc)
Базовая поддержка (Да) (Да) (Да) тд> 4.0 (4. 0) (Да) (Да) (Да)

См. также

  • Использование файлов из веб-приложений - содержит ряд других полезных примеры, относящиеся к и File API.


The Wall Street Journal

  • США

Маски низкого качества от King Year Printing and Packaging могли подвергнуть опасности американских рядовых рабочих, утверждают прокуроры

Одобренные регулирующим органом респираторы N95 отфильтровывают не менее 95% очень мелких частиц, но маски, произведенные King Year Printing and Packaging Co. Ltd., оказались неэффективными. это стандартно, согласно жалобе.

Фото: Виктор Дж. Блю/Bloomberg News

Федеральная прокуратура обвинила китайского производителя в экспорте в США почти полумиллиона масок, которые ложно выдавались за респираторы N95, заявив, что некачественная продукция могла подвергнуть медицинских работников риску в условиях пандемии коронавируса.

Согласно жалобе, поданной в окружной суд США в Бруклине в пятницу, в апреле федеральные власти изъяли маски федеральными властями в аэропорту Джона Ф. Кеннеди в Нью-Йорке.

Федеральный чиновник сказал, что это была Впервые такие уголовные обвинения были предъявлены производителю масок во время пандемии, хотя другим лицам были предъявлены обвинения в преступлениях, связанных со спекуляцией.

Прокуратура утверждала, что компания King Year Printing and Packaging Co. маски как респираторы N95, одобренные Национальным институтом охраны труда и техники безопасности, или Niosh, филиалом Центры по контролю и профилактике заболеваний, регулирующие использование масок и другого защитного оборудования.

Респираторы, одобренные Niosh, отфильтровывают не менее 95% очень мелких частиц, включая капли, содержащие вирусы, и широко используются в здравоохранении - работники по уходу и другие лица во время пандемии. Тесты Niosh на масках King Year показали, что они не соответствуют этому стандарту, отфильтровывая от 83% до 91% частиц, согласно жалобе.

To Прочитать полную историю
Подписаться Войти

Продолжайте читать свою статью с
членством в WSJ

Просмотр параметров членства

Рекламные предложения
  • Цель:
    Скидка 20% на весь заказ - Целевой промокод
  • Walmart:
    Промокод Walmart: скидка 10 долларов на все категории
  • HP:
    Код купона HP: дополнительная скидка 10% на игровые ноутбуки и настольные компьютеры
  • AT&T Wireless:
    Сэкономьте 700 долларов на Motorola razr - сделка с AT&T Wireless
  • Microsoft Store:
    Купон Microsoft - скидка 10% для всех военнослужащих
  • Samsung:
    скидка 5% - промокод Samsung

Самые популярные видео

  • Наука о том, как коронавирус влияет на мозг

  • Поддельные вакцины против Covid-19: что нужно знать о поддельных вакцинах, продаваемых в Интернете

  • Почему офицер полиции Капитолия говорит, что он носил шляпу MAGA во время беспорядков

  • Коронавирус мутирует. Вот что мы знаем

  • Видеоанализ: как толпа сторонников Трампа захватила полицию Капитолия

Оцените статью
logicle.ru
Добавить комментарий