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作为回应然后它会更好
答案 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');
});
}
})