Firebase存储 - 上传Blob网址

时间:2018-02-19 09:17:50

标签: firebase blob firebase-storage

我有一个blob网址,例如:

blob:http://localhost:4200/06a6baa9-b7ff-4171-9dc2-a1caed35e099

并且在进入

  this.storage.ref('users/' + uid + '/mainPhoto').put(imageURL))

我收到此错误:

  

Firebase存储:索引0处的put中的参数无效:预期的Blob或文件。

3 个答案:

答案 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次修改:-

  1. 在“ uploadToStorage =(imageURL)...”前面应该有一个“ var”
  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部分。