我有一个blob网址,例如:
blob:http://localhost:4200/06a6baa9-b7ff-4171-9dc2-a1caed35e099
并且在进入
时 this.storage.ref('users/' + uid + '/mainPhoto').put(imageURL))
我收到此错误:
Firebase存储:索引0处的
put
中的参数无效:预期的Blob或文件。
答案 0 :(得分:4)
您需要从blob网址上传blob, 而不是将其上传到firebase存储
上传功能:
uploadToStorage = (imageURL) = >{
getFileBlob(imageURL, blob =>{
firebase.storage().ref().put(blob).then(function(snapshot) {
console.log('Uploaded a blob or file!');
})
})
}
getBlob功能:
var getFileBlob = function (url, cb) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.responseType = "blob";
xhr.addEventListener('load', function() {
cb(xhr.response);
});
xhr.send();
};
答案 1 :(得分:2)
参考dan的解决方案,对 Upload Function (上载功能)进行了2次修改:-
上传功能
var uploadToStorage = (imageURL) => {
getFileBlob(imageURL, blob =>{
firebase.storage().ref().put(blob).then(function(snapshot) {
console.log('Uploaded a blob or file!');
})
})
}
答案 2 :(得分:1)
你不需要传递blob的网址,只需通过blob本身。
var file = ... // use the Blob or File API
ref.put(file).then(function(snapshot) {
console.log('Uploaded a blob or file!');
});
请参阅“从Blob或文件上传”' Firebase File Upload部分。