Удалить конкретный индекс входных файлов при событии щелчка

Здесь у меня есть входной файл, который принимает несколько файлов. Теперь я хочу удалить элемент индекса 2 из входного файла. Вот мой код HTML и js. Здесь я получаю ошибку JS. Ваши уловки были бы драгоценны.

HTML

<input type="file" multiple id="uploadFile" />
<button type="button" id="removeFile">
  Remove one file
</button>

JAVASCRIPT

  let uploadFile=document.getElementById("uploadFile");
        let removeFile=document.getElementById("removeFile");
        uploadFile.addEventListener("change",function(event){
          console.log(event.currentTarget.files);
        })
        removeFile.addEventListener("click",function(event){
            let uploadFile=document.getElementById("uploadFile");
            let files=uploadFile.files[0];
            uploadFile.files.slice(1,1);
            console.log(uploadFile.files);
        })

пожалуйста, проверьте stackoverflow.com/questions/19060378/…

Ripun 10.09.2018 10:46

Включите также ошибку консоли.

Sumesh TG 10.09.2018 11:04
0
2
135
1

Ответы 1

Свойство files для input[type=file] относится к типу FileList, а не к массиву, поэтому для начала нет метода среза.

https://developer.mozilla.org/en-US/docs/Web/API/FileList

но ничто не мешает вам сначала скопировать файлы в массив

var files = [].slice.call(uploadFile.files)
console.log(files.slice(1,1))
// or directly
var files = [].slice.call(uploadFile.files,1,1)
files.splice(0,1); // remove the first file, you can also use files.shift()
console.log(files)

Я пробовал использовать ваше решение, но пока печатаю console.log (файлы). Не удаляет из файлов. Пожалуйста, проверьте Codepen. Я не знаю, почему .

Hira Kumar Maharjan 10.09.2018 11:08

Да, потому что slice не изменяет исходный массив, а возвращает копию, вместо этого используйте splice, я отредактировал свой ответ.

mpm 10.09.2018 11:44

Другие вопросы по теме