Exif.js проблема при отправке действия с Vuex - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь использовать EXIF.js с Vuex для отправки широты, долготы и даты изображений на сервер, но у меня возникла проблема с отправкой действия.Проблема в том, что EXIF.getData имеет обратный вызов (поэтому невозможно использовать отправку), а также, если я пытаюсь отправить в обещании (как показано ниже), это невозможно.Вы думаете, что есть решение?

upload() {
                var formData = new FormData();
                let counter=0
                const formPromise = new Promise((resolve, reject) => {
                    let size = this.files.length
                    this.files.forEach(file => {
                        formData.append('images[]', file);
                        EXIF.getData(file, function () {
                            const long = EXIF.getTag(file, "GPSLongitude")
                            this.longitude = long[0].numerator + long[1].numerator /
                                    (60 * long[1].denominator) + long[2].numerator / (3600 * long[2].denominator)
                            const lat = EXIF.getTag(file, "GPSLatitude")
                            this.latitude = lat[0].numerator + lat[1].numerator /
                                    (60 * lat[1].denominator) + lat[2].numerator / (3600 * lat[2].denominator)
                            this.date = EXIF.getTag(file, "GPSDateStamp")
                            formData.append('latitudes[]', this.latitude);
                            formData.append('longitudes[]', this.longitude);
                            formData.append('dates[]', this.date);
                            counter+=1
                            if(counter == size) {
                                resolve(formData)
                            }
                        })
                    });
                })
            formPromise.then(function(formData){
                this.$store.dispatch('createPhotos', data)
            })
                const categoryId = this.categoryId
                const data = { formData, categoryId }
                this.snackbar = true
                this.files = [];
                this.images = [];
        }
...