我正在制作此应用,用户可以在其中拥有个人资料图片(但每个人只能有一张图片)。我已完成所有设置,但是当图片大于2mb时,加载会花费一些时间,实际上我只需要将图片设为50kb左右(仅小图片显示,最大40像素)。我编写了一些代码,将图像直接放入实时数据库中(转换为 Canvas ,并使其成为7kb base64字符串)。但是,这并不是真的很干净,最好使用Firebase Storage。

从新的更新3.3.0开始,您可以使用putString()方法将Base64格式的字符串上载到Storage。但是,当我上传 Canvas 图像(以“data:image / jpeg; base64”开头)时,出现错误:

v {代码:“存储/无效格式”,消息:“Firebase存储:字符串与格式'base64'不匹配:找到的无效字符”,serverResponse:null,名称:“FirebaseError”}

是否由于开头的 Canvas 图像字符串而发生此错误?我已经搜索了整个Stack,但是似乎找不到答案。

最佳答案

Jeez,我已经很忙了很长一段时间,但是在发布此帖子后,我自己找到了答案。解决方案是获取base64变量并删除前23位(例如:“data:image / jpeg; base64”),然后将其上传到Firebase存储。现在它已被接受,您可以通过以下方式将链接放入实时数据库中:

var storageRef = firebase.storage().ref().child("Whatever your path is in Firebase Storage");
var imageRef = "Your path in the Realtime Database";

    storageRef.getDownloadURL().then(function(url) {
        imageRef.child("image").set(url);
    });

    var task = storageRef.putString("Your base64 string substring variable", 'base64').then(function(snapshot) {
         console.log('Uploaded a base64 string!');
         });

关于javascript - 使用Firebase存储上传base64图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39310147/

10-12 12:26
查看更多