Я пытаюсь получить все значения URL из нескольких входных файлов. Он работает правильно только с одним изображением, но если я попытаюсь прикрепить более одного, я получу нулевой ответ и правильно получу только последний. Я надеюсь, что кто-нибудь может помочь с этой проблемой! Опубликуйте мой код ниже и пример JSFiddle:
<input type = "file" id = "files" name = "files[]" multiple />
<output id = "list"></output>
<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
// Loop through the FileList and render image files as thumbnails.
for (var i = 0, f; f = files[i]; i++) {
// Only process image files.
if (!f.type.match('image.*')) {
continue;
}
var reader = new FileReader();
// Closure to capture the file information.
reader.onload = (function(theFile) {
return function(e) {
//show url image
var dataURL = reader.result;
alert(dataURL);
};
})(f);
// Read in the image file as a data URL.
reader.readAsDataURL(f);
}
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
Что вы хотите сделать с этими URL-адресами? Скорее всего, вам даже не нужен FileReader, и все, что вам нужно, это [...files].map(URL.createObjectURL).



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы используете
var reader, а это значит, что он постоянно перезаписывается. Вместо этого используйтеlet reader.