首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Blob URL上载到firebase存储

Blob URL上载到firebase存储
EN

Stack Overflow用户
提问于 2020-01-29 21:11:35
回答 2查看 1.7K关注 0票数 1

我使用"react- image -crop“(https://github.com/DominicTobias/react-image-crop)来裁剪图像,然后将其上传到Firebase存储。在我的状态下,来自"react-image-crop“的响应是一个blob:URL。当我调用时:

代码语言:javascript
复制
var storageRef = firebase.storage().ref();
        var mountainImagesRef = storageRef.child(
            "images/" + auth.uid + "/avatar.jpg"
        );
        mountainImagesRef.put(file).then(function(snapshot) {...

我得到了错误:

代码语言:javascript
复制
Firebase Storage: Invalid argument in `put` at index 0: Expected Blob or File.

我知道我需要传递一个blob或文件,而不是URL,但是我如何解决这个问题呢?

谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-29 22:02:37

我通过编辑返回的"react-image-crop“承诺修复了这个问题。将退货承诺更改为:

代码语言:javascript
复制
return new Promise((resolve, reject) => {
            canvas.toBlob(blob => {
                if (!blob) {
                    //reject(new Error('Canvas is empty'));
                    console.error("Canvas is empty");
                    return;
                }
                blob.name = fileName;
                console.log(blob);
                resolve(blob);
            }, "image/jpeg");
        });

现在你将得到一个返回的blob,而不是一个blob url。

票数 2
EN

Stack Overflow用户

发布于 2020-01-29 21:15:01

您可以通过fetch请求从图片URL检索blob:

代码语言:javascript
复制
async blobFromURL(url) {
 blob = await fetch(this.imageUrl).then(r => r.blob());
 return blob
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59967871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档