【问题标题】:How to upload an array of images to firebase storage?如何将一组图像上传到 Firebase 存储?
【发布时间】:2016-11-08 07:46:16
【问题描述】:

现在我正在使用 array.map 方法来上传每个文件并获取 url 作为响应,但问题是它在某些文件中给了我“C:\fakepath\pic1”,这会造成混乱,尽管它可以正确上传(意味着我已经在我的 firebase 存储中看到了图像)但没有得到响应的 url
这是我用来放置文件的代码

uploadPicsArr.map(function (pic, index) {
                var storageRef = fbStorage.ref('images/'+token+'/'+pic.name);
                // Upload file to Firebase Storage
                var uploadTask = storageRef.put(pic.file);
                uploadTask.on('state_changed', null, null, function () {
                    var downloadUrl = uploadTask.snapshot.downloadURL;
                    userInfo[pic.name] = downloadUrl;
                })
                if (uploadPicsArr.length == index + 1) {
                   fbDatabase.ref('users').push(userInfo).then(function (success){
                        browserHistory.push('/home');
                    });
                }
            })

fbStorage: firebase.storage()
uploadPicsArr = 一个对象数组,每个对象都有一个属性名称和文件
name: 所选文件的名称
file : 选择的文件
请告诉我我做错了什么,或者是否有其他更好的方法来上传整个数组并获取每个文件的 URL 作为响应,那么它会更好

【问题讨论】:

    标签: javascript firebase firebase-storage


    【解决方案1】:

    我认为你忘记在完整函数中将快照作为参数传递:

    uploadPicsArr.map(function (pic, index) {
        var storageRef = fbStorage.ref('images/'+token+'/'+pic.name);
        // Upload file to Firebase Storage
        var uploadTask = storageRef.put(pic.file);
        uploadTask.on('state_changed', null, null, function (snapshot) {
            userInfo[pic.name] = snapshot.downloadURL;
        })
        if (uploadPicsArr.length == index + 1) {
           fbDatabase.ref('users').push(userInfo).then(function (success){
                browserHistory.push('/home');
            });
        }
    })
    

    【讨论】:

    • 不,这是一个承诺问题,比如我必须等待存储解决,而我不是 react app
    猜你喜欢
    • 2020-04-26
    • 2017-03-27
    • 2017-09-25
    • 2021-02-20
    • 2020-12-16
    • 1970-01-01
    相关资源
    最近更新 更多