this.$refs.selectedImages.files.forEach не является функцией

#javascript #windows #vue.js #electron

#javascript #Windows #vue.js #электрон

Вопрос:

Я работаю над приложением vue-electron. У меня есть некоторые проблемы со сборкой Windows. Кажется, что когда пользователь выбирает некоторые файлы, и я пытаюсь получить их с помощью $refs , это не сработает. У меня есть простой ввод файла, подобный этому

 <input type="file" class="custom-file-input" ref="selectedImages" @change="handleFiles()">
 

В мой код компонента vue я добавил метод, который называется handleFiles() он будет получать только путь к файлам и тип для каждого файла, который находится в объекте file

 this.$refs.selectedImages.files.forEach( (file) => {
 const fileDetails = {path: file.path, type: file.type}
 this.files.push(fileDetails);
});
 

Код отлично работает на macOS, и ошибок не возникает, файлы выбраны и правильно повторяются из цикла. Проблема возникнет только в сборке Windows, где кажется, что ввод файла не выбран с помощью $refs . Есть ли какое-либо решение для решения этой проблемы? Я подумываю заменить $refs на for цикл, но не уверен.

Редактировать

Я переключился с forEach() цикла на for() . Теперь ошибка кажется решаемой, но я заметил проблему с путем к файлу, когда они передаются в основной процесс. На моей тестовой машине virtualbox win10 я обнаружил в консоли, что путь к файлам указан неверно

если указан путь к файлу C:UsersdebugDesktopfilename.jpg , он будет передан с дополнительным символом косой C:\Users\debug\Desktop\filename.jpg черты. Возможно ли это исправить?

Ответ №1:

Список файлов не является массивом. Попробуйте преобразовать его в массив:

 Array.from(this.$refs.selectedImages.files).forEach( (file) => {
 const fileDetails = {path: file.path, type: file.type}
 this.files.push(fileDetails);
});