如何将图像数组上传到firebase存储?

时间:2016-07-06 09:44:12

标签: javascript firebase firebase-storage

Rightnow我正在使用array.map方法上传每个文件并获取响应的url,但事情是它在某些文件中给了我“C:\ fakepath \ pic1”,虽然它正确上传但它会造成混乱(意味着我已经看到了我的火力库存储中的图像)但是没有回复网址作为回应 这是我用来放文件的代码

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作为回应然后它会更好

1 个答案:

答案 0 :(得分:0)

我认为您忘记将快照作为完整功能中的参数传递:

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');
        });
    }
})