FileList
Базовая Широко доступна
Эта функция хорошо зарекомендовала себя и работает во многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.
Примечание: Эта функция доступна в Web Workers.
Интерфейс FileList представляет собой объект этого типа, возвращаемый свойством files элемента HTML <input>; это позволяет получить доступ к списку файлов, выбранных с помощью элемента <input type="file">. Он также используется для списка файлов, перетащенных в веб-контент при использовании API перетаскивания и сброса; см. объект DataTransfer для получения подробностей об этом использовании.
У всех узлов элемента <input> есть атрибут files типа FileList, который позволяет получить доступ к элементам этого списка. Например, если HTML содержит следующий элемент ввода файла:
<input id="fileItem" type="file" />
Следующая строка кода извлекает первый файл в списке файлов узла как объект File:
const file = document.getElementById("fileItem").files[0];
Этот интерфейс был попыткой создать неизменяемый список и продолжает поддерживаться только для того, чтобы не сломать код, который его уже использует. Современные API представляют структуры списков с использованием типов, основанных на JavaScript массивах, тем самым делая доступными многие методы массивов и одновременно накладывая дополнительные семантики на их использование (например, делая их элементы неизменяемыми).
Эти исторические причины не означают, что вы, как разработчик, должны избегать FileList. Вы не создаёте объекты FileList самостоятельно, но получаете их от API, таких как HTMLInputElement.files, и эти API не устарели. Однако будьте осторожны с семантическими различиями от реального массива.
Свойства экземпляра
-
lengthТолько для чтения -
Значение только для чтения, указывающее количество файлов в списке.
Методы экземпляра
Пример
Вывод имён файлов
В этом примере мы выводим имена всех файлов, выбранных пользователем.
HTML
<input id="myfiles" multiple type="file" /> <pre class="output">Selected files:</pre>
CSS
.output {
overflow: scroll;
margin: 1rem 0;
height: 200px;
}
JavaScript
const output = document.querySelector(".output");
const fileInput = document.querySelector("#myfiles");
fileInput.addEventListener("change", () => {
for (const file of fileInput.files) {
output.innerText += `\n${file.name}`;
}
});
Результат
Спецификации
| Спецификация |
|---|
| API файлов # filelist-section |
| HTML # dom-input-files-dev |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
FileList |
2 | 12 | 3 | 11.1 | 4 | 18 | 4 | 11.1 | 3.2 | 1.0 | ≤37 |
item |
2 | 12 | 3 | ≤12.1 | 4 | 18 | 4 | ≤12.1 | 3.2 | 1.0 | ≤37 |
length |
2 | 12 | 3 | 11.1 | 4 | 18 | 4 | 11.1 | 3.2 | 1.0 | ≤37 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/FileList