Javascript 使用Vuex和FIrebase存储多个图像。(等待图像上载)
我有一个工作解决方案用于将多个图像上载到firebase。我从vue croppa插件中获取图像,该插件在手机上运行良好。 我为所有图像生成BLOB文件。然后我将它们上传到firebase存储,并接收一个url,我将其放入数据库中的对象中。(这是一个注册工具的项目) Vuex代码(JS): 图像被上传,我收到了下载的URL,我将其存储在ImageURL[]中挑战在于在将“工具”数据上传到数据库之前,代码不会等待for循环完成并检索所有URL。因此,URL不会注册到该工具。 我认为解决方案应该是一个异步等待系统,但我真的不知道该怎么做 以下是用于测试的.vue文件:Javascript 使用Vuex和FIrebase存储多个图像。(等待图像上载),javascript,firebase,firebase-storage,vuex,Javascript,Firebase,Firebase Storage,Vuex,我有一个工作解决方案用于将多个图像上载到firebase。我从vue croppa插件中获取图像,该插件在手机上运行良好。 我为所有图像生成BLOB文件。然后我将它们上传到firebase存储,并接收一个url,我将其放入数据库中的对象中。(这是一个注册工具的项目) Vuex代码(JS): 图像被上传,我收到了下载的URL,我将其存储在ImageURL[]中挑战在于在将“工具”数据上传到数据库之前,代码不会等待for循环完成并检索所有URL。因此,URL不会注册到该工具。 我认为解决方案应该是一
<template>
<v-layout column align-center>
<v-flex xs12 sm6 class="mt-5">
<croppa v-for="(c, i) in croppas"
:key="i"
v-model="croppas[i]"
:width="300"
:height="300"
:placeholder="'Choose an image'"
@new-image="croppas.push({})"
v-show="i === croppas.length - 1 || c.imageSet">
</croppa>
<croppa
:v-if="this.croppas == ''"
:width="300"
:height="300"
:placeholder="'Choose an image'"
@new-image="croppas.push({})">
</croppa>
</v-flex>
<v-flex xs12 class="my-4">
<v-btn @click="onCreateTool" color="#D08513" dark class="darkCustomBtn">Upload</v-btn>
<v-btn to="/tools" flat class="customBtn ml-3" >Cancel</v-btn>
</v-flex>
</v-layout>
</template>
<script>
export default {
data () {
return {
title: '',
croppas: []
}
},
methods: {
onCreateTool() {
this.$store.dispatch('createTool', { croppas: this.croppas, title: this.title })
}
}
}
</script>
上传
取消
导出默认值{
数据(){
返回{
标题:“”,
作物:[]
}
},
方法:{
onCreateTool(){
this.$store.dispatch('createTool',{cropas:this.cropas,title:this.title})
}
}
}
答案已存在:。
这正是您想要的:)。这是多种方法中的一种,但这一种确实在代码中,并且有一个google错误处理程序。答案已经存在:。 这正是您想要的:)。
这是多种方法中的一种,但这一种方法确实在代码中,并且有一个google错误处理程序。谢谢。在发布之前,我会花更多的时间寻找类似的问题,下次:)我应该删除这篇文章吗?不,没有必要:)。希望它能帮助别人。如果你想用另一种方法解决这个问题,你可以使用
Array
和for loop
和多文件表单:)。谢谢。在发布之前,我会花更多的时间寻找类似的问题,下次:)我应该删除这篇文章吗?不,没有必要:)。希望它能帮助别人。如果您想用另一种方法来解决这个问题,您可以对多个文件使用数组
和for循环
。
<template>
<v-layout column align-center>
<v-flex xs12 sm6 class="mt-5">
<croppa v-for="(c, i) in croppas"
:key="i"
v-model="croppas[i]"
:width="300"
:height="300"
:placeholder="'Choose an image'"
@new-image="croppas.push({})"
v-show="i === croppas.length - 1 || c.imageSet">
</croppa>
<croppa
:v-if="this.croppas == ''"
:width="300"
:height="300"
:placeholder="'Choose an image'"
@new-image="croppas.push({})">
</croppa>
</v-flex>
<v-flex xs12 class="my-4">
<v-btn @click="onCreateTool" color="#D08513" dark class="darkCustomBtn">Upload</v-btn>
<v-btn to="/tools" flat class="customBtn ml-3" >Cancel</v-btn>
</v-flex>
</v-layout>
</template>
<script>
export default {
data () {
return {
title: '',
croppas: []
}
},
methods: {
onCreateTool() {
this.$store.dispatch('createTool', { croppas: this.croppas, title: this.title })
}
}
}
</script>