Сбросить массив для загрузки файла - PullRequest
0 голосов
/ 20 сентября 2019

Вложения продолжают получать предыдущий выбранный файл.Если я выбрал 3 файла, а затем снова выбрал 2 файла, общее количество файлов становится 5, а не 2. Вложения продолжают добавлять файлы до и не сбрасываются, когда я хочу выбрать повторно.Заранее спасибо.

Шаблон

<input id="upload-file" type="file" multiple class="form-control" @change="fieldChange">

Скрипт

<script>
export default {
    data(){
        return{
          year:'',
          attachments:[],
          form: new FormData
        }
    },
    methods:{
        fieldChange(e){
            let selectedFiles=e.target.files;
            if(!selectedFiles.length){
                return false;
            }
            for(let i=0;i<selectedFiles.length;i++){
                this.attachments.push(selectedFiles[i]);
            }
            console.log(this.attachments);
        },
   }
</script>

РЕДАКТИРОВАТЬ

Также возникают проблемы, связанные с отправкой формы.У form.pics [] все еще есть предыдущие файлы, и при отправке предыдущие файлы будут снова сохранены в базе данных.Я попытался сбросить его с помощью form.pics = [], но не работает.

Скрипт

 uploadFile(){
            for(let i=0; i<this.attachments.length;i++){
                this.form.append('pics[]',this.attachments[i]);
            }
            this.form.append('year',this.year);
            axios.post('/api/gallery',this.form).then(response=>{
                console.log(response);
                this.form.pics = [];
            })
            .catch(response=>{
                //error
            });
        }

1 Ответ

0 голосов
/ 20 сентября 2019

Поскольку вы нажимаете на вложения и не сбрасываете его.

Попробуйте это

<script>
export default {
    data(){
        return{
          year:'',
          attachments:[],
          form: new FormData
        }
    },
    methods:{
        fieldChange(e){
            this.attachments = []; // added this one
            let selectedFiles=e.target.files;
            if(!selectedFiles.length){
                return false;
            }
            for(let i=0;i<selectedFiles.length;i++){
                this.attachments.push(selectedFiles[i]);
            }
            console.log(this.attachments);
        },
   }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...