вместо

я есть файл ввода сmultiple="multiple" атрибут, позволяющий пользователям выбирать несколько файлов одновременно. Я хотел бы отобразить выбранные имена файлов и их количество до загрузки, однако я не уверен, как получить эту информацию из элемента ввода файла с помощью JavaScript?

<input type="file" id="fileElementId" name="files[]" size="20" multiple="multiple" />

Я пробовал это:

document.getElementById('fileElementId').value

Но это возвращает только одно имя файла, когда я выбираю несколько файлов. Использование JavaScript - это как получить количество выбранных файлов и их имен из элемента ввода файла сmultiple атрибут?

Ответы на вопрос(3)

Ответ должен бытьdocument.getElementById('fileElementId').files.length; вместоdocument.getElementById('fileElementId').files;.

Решение Вопроса

<input> Элемент будет иметь свойство «файлы». Это даст вам ссылку «FileList», которая имеет свойство «.length». Существует также метод доступа с именем .item () для экземпляра FileList, и для доступа к отдельным элементам «File» требуется целочисленный аргумент. У них есть свойство ".name".

Так:

var inp = document.getElementById('fileElementId');
for (var i = 0; i < inp.files.length; ++i) {
  var name = inp.files.item(i).name;
  alert("here is a file name: " + name);
}

Это, конечно, не будет работать в старых версиях IE, и я даже не уверен, насколько тщательна поддержка Safari и Chrome; однако, если вы пишете страницы с «множеством», установленным на ваших файловых входах, вы уже танцуете на краю :-)

 gordon22 июн. 2012 г., 23:41
FWIW, если вам нужны размеры файлов:fileSize=inp.files.item(i).size
 Stann30 мая 2011 г., 01:24
несколько работ в Firefox 3.6+, Chrome 2+, Safari 4+, Opera 11+ и т. д., так что да - везде, кроме IE (даже не IE9). Мне проще сказать людям обновить свой браузер, чем вводить проблему с фиксацией сеанса, исправляя ошибку flash cookie, поскольку единственной жизнеспособной альтернативой является flash uploader.
 Stann30 мая 2011 г., 01:28
Спасибо хоть. это работало для меня в Chrom, Firefox, Opera, Safari. Определенно с треском проваливается в кучу мусора, то есть IE. :) лол

Это не проверено, но вы можете попробовать:

    $('#fileElementId').get(0).files;

или же

    document.getElementById('fileElementId').files;
 Ibu23 мар. 2018 г., 08:24
Это комментарий 7 лет назад, не позволяйте ему демотивировать вас.
 R J.27 нояб. 2012 г., 08:01
$ ('# fileElementId'). get (0) .files возвращает только объект. вместо этого используйте $ ('# fileElementId'). get (0) .files.length.
 Stann30 мая 2011 г., 04:27
@lbu: Я не понимаю, почему это не так. главное - свойство элемента «файлы». а также - да - я проверил - это работает или jquery или сырым способом.
 Ibu30 мая 2011 г., 01:33
почему бы вам не проверить это и сообщить нам, если это работает
 I am the Most Stupid Person23 мар. 2018 г., 07:25
@ Возможно, он не успел это проверить. Лучше, если вы протестируете ответ или оцените его, ...... Не демотивируйте пользователей.

Ваш ответ на вопрос