将图像从 rest 端点保存到 firebase 存储不起作用,但可以从前端工作
Posted
技术标签:
【中文标题】将图像从 rest 端点保存到 firebase 存储不起作用,但可以从前端工作【英文标题】:Saving image from rest endpoint to firebase storage does not work but works from frontend 【发布时间】:2021-06-27 07:03:59 【问题描述】:我有一个 React webapp,它获取图像,将其转换为 base64,然后将其发送到我的 REST 端点。
尝试将图像直接从前端保存到firebase storage
工作正常。
当我尝试从我的 REST 中保存它时,它会抛出:
[FirebaseStorageError [FirebaseError]: Firebase Storage: String does not match format 'base64': Invalid character found (storage/invalid-format)]
code: 'storage/invalid-format',
customData: serverResponse: null
我这样初始化我的存储:
const firebaseStorage = () =>
if (firebase.apps.length === 0)
firebase.initializeApp(config.firebaseConfig);
return firebase.storage().ref();
;
我尝试像这样上传到存储:
const URI = `images/$uid/avatar`;
const ref = firebaseStorage().child(URI);
await ref.putString(image64, "data_url");
编辑
将 base64 图像转换为 Blob
并尝试通过 ref.put(blob)
将其保存到存储后,我收到以下错误:
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'byteLength' of undefined
【问题讨论】:
提供在服务器端获取image64
的方式。
@hoangdv 我在 POST 调用中将其作为字符串传递。如果我复制字符串服务器端并将其粘贴到 64 解码器中,我可以看到正确显示的图像。
尝试使用内容类型pref.putString(image64, "data_url", contentType: 'image/jpg')
@hoangdv 我的图片是 jpeg 格式,即使我将 contentType 设置为 image/jpg
或 image/jpeg
它仍然无法正常工作并抛出同样的问题
我也尝试过剥离 base64 标头“data:image/jpeg;base64”并使用ref.putString(image64, "base64")
,它仍然抛出相同的
【参考方案1】:
你试过 ref.putString(image64, 'base64url') 吗?
【讨论】:
以上是关于将图像从 rest 端点保存到 firebase 存储不起作用,但可以从前端工作的主要内容,如果未能解决你的问题,请参考以下文章