Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Vuex和FIrebase存储多个图像。(等待图像上载)_Javascript_Firebase_Firebase Storage_Vuex - Fatal编程技术网

Javascript 使用Vuex和FIrebase存储多个图像。(等待图像上载)

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不会注册到该工具。 我认为解决方案应该是一

我有一个工作解决方案用于将多个图像上载到firebase。我从vue croppa插件中获取图像,该插件在手机上运行良好。 我为所有图像生成BLOB文件。然后我将它们上传到firebase存储,并接收一个url,我将其放入数据库中的对象中。(这是一个注册工具的项目)

Vuex代码(JS):

图像被上传,我收到了下载的URL,我将其存储在ImageURL[]中挑战在于在将“工具”数据上传到数据库之前,代码不会等待for循环完成并检索所有URL。因此,URL不会注册到该工具。 我认为解决方案应该是一个异步等待系统,但我真的不知道该怎么做

以下是用于测试的.vue文件:

     <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>