如何将一组图像上传到 Firebase 存储?

Posted

技术标签:

【中文标题】如何将一组图像上传到 Firebase 存储?【英文标题】:How to upload an array of images to firebase storage? 【发布时间】: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 作为响应,那么它会更好

【问题讨论】:

【参考方案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

以上是关于如何将一组图像上传到 Firebase 存储?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据内容将一组图像文件聚集到不同的文件夹

如何通过 iOS 中的 JSON webservices post 方法将一组图像发送到服务器?

如何将一组图像拼接成 MxN 图像拼贴

将一组图像分类为类

如何将缓冲区图像上传到 cloudinary?

如何使用 Laravel 正确上传一组图像