Firebase存储-上载Blob Url

Firebase存储-上载Blob Url,firebase,blob,firebase-storage,Firebase,Blob,Firebase Storage,我有一个blob url,例如: blob:http://localhost:4200/06a6baa9-b7ff-4171-9dc2-a1caed35e099 当进入 this.storage.ref('users/' + uid + '/mainPhoto').put(imageURL)) 我收到这个错误: Firebase存储:索引0处的put中的参数无效:应为Blob或文件 您需要从blob url上传blob, 然后将其上载到firebase存储 上传功能: uploadToS

我有一个blob url,例如:

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

  this.storage.ref('users/' + uid + '/mainPhoto').put(imageURL))
我收到这个错误:

Firebase存储:索引0处的
put
中的参数无效:应为Blob或文件


您需要从blob url上传blob, 然后将其上载到firebase存储

上传功能

uploadToStorage = (imageURL) = >{

     getFileBlob(imageURL, blob =>{
        firebase.storage().ref().put(blob).then(function(snapshot) {
           console.log('Uploaded a blob or file!');
        })
    })
}
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();
    };
getBlob函数

uploadToStorage = (imageURL) = >{

     getFileBlob(imageURL, blob =>{
        firebase.storage().ref().put(blob).then(function(snapshot) {
           console.log('Uploaded a blob or file!');
        })
    })
}
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();
    };

您需要从blob url上传blob, 然后将其上载到firebase存储

上传功能

uploadToStorage = (imageURL) = >{

     getFileBlob(imageURL, blob =>{
        firebase.storage().ref().put(blob).then(function(snapshot) {
           console.log('Uploaded a blob or file!');
        })
    })
}
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();
    };
getBlob函数

uploadToStorage = (imageURL) = >{

     getFileBlob(imageURL, blob =>{
        firebase.storage().ref().put(blob).then(function(snapshot) {
           console.log('Uploaded a blob or file!');
        })
    })
}
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();
    };

参考dan的解决方案,对上传功能进行了两次修改后,它对我有效:-

  • “uploadToStorage=(imageURL)…”前面应该有一个“var”
  • “=>”不应有间距
  • 上传功能

    var uploadToStorage = (imageURL) => {
    
         getFileBlob(imageURL, blob =>{
            firebase.storage().ref().put(blob).then(function(snapshot) {
               console.log('Uploaded a blob or file!');
            })
        })
    }
    

    参考dan的解决方案,对上传功能进行了两次修改后,它对我有效:-

  • “uploadToStorage=(imageURL)…”前面应该有一个“var”
  • “=>”不应有间距
  • 上传功能

    var uploadToStorage = (imageURL) => {
    
         getFileBlob(imageURL, blob =>{
            firebase.storage().ref().put(blob).then(function(snapshot) {
               console.log('Uploaded a blob or file!');
            })
        })
    }
    

    这是使用expo时的最佳解决方案。。由于某些原因,现在fetch无法工作..getFileBlob从何而来?这是使用expo时的最佳解决方案。。由于某些原因,现在fetch不起作用..getFileBlob来自哪里?