angular - 将 base64 图像上传到 Firebase 存储会引发神秘的 Angular 错误
问题描述
我正在尝试通过常规 Firebase api 将 base64 图像上传到 Firebase 存储。这是代码:
finalName = this.generateRandomName();
const storageRef = firebase.storage().ref(filePath);
console.log(filePath); // users/foouid
console.log(finalName); // foo.jpg
console.log(storageRef); // Reference {authWrapper: AuthWrapper, location: Location}
console.log(file); // data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQE ...
return storageRef.child(finalName).putString(file, 'base64', {contentType: 'image/jpeg'});
一切都记录了正确的信息,但由于某种原因在下一行 Angular 抛出以下错误,仅提及触发视图中的功能的按钮:
RegisterComponent.html:281
ERROR Error: [object Object]
at viewWrappedDebugError (core.js:7595)
at callWithDebugContext (core.js:11361)
at Object.debugHandleEvent [as handleEvent] (core.js:11054)
at dispatchEvent (core.js:7717)
at core.js:8161
at HTMLButtonElement.<anonymous> (platform-browser.js:995)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
at Object.onInvokeTask (core.js:3815)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
此外,没有在网络中发送 http 帖子。
解决方案
原来 Firebase 存储不喜欢字符串的开头,data:image/jpeg;base64,
因为该方法已经处理了它。从 base64 字符串中删除它就可以了。
推荐阅读
- postgresql - PostgreSQL 数据库同步
- java - 在 Textview 中使用 HTML 标签形成一个从外部文件读取数据的表格
- angular - 如何在角度组件之前捕获已解析的数据?
- django - Django 测试 - 类型错误:int() 参数必须是字符串、类似字节的对象或数字,而不是“用户”
- nginx - 为什么 Nginx 0 秒延迟和 1 秒延迟有很大不同?以及如何计算?
- python - 用于 Ajax 的 Django csrf 令牌
- html - 引导偏移不起作用
- python - 每次我尝试运行应用程序时都会出现“RuntimeError:生成器引发 StopIteration”
- python-3.x - 如何修复错误 urllib.error.HTTPError:HTTP 错误 400:错误请求?
- python - 用于 MT 的 Jasmin HttpConnector