从 REST API 获取图像并使用 Firebase 云函数将其上传到 Firebase 云存储
Getting image from REST API and uploading it to Firebase Cloud Storage using Firebase Cloud Functions
我需要完成什么
我需要从 rest API (base64) 获取图像并将单个图像写入 Firebase 云存储。图片写入成功后,将日志写入Firebase实时数据库。
有什么问题
好吧,我使用 AdminSDK 初始化了 Firebase 应用程序(云功能),因为我需要一些管理功能(例如绕过实时数据库规则)。根据 Firebase 文档,如果我使用 AdminSDK,那么为了操作云存储我必须使用“@google-cloud/storage”。
所以我在 documentation 中查找“@google-cloud/storage”,发现要上传文件,我必须调用方法“.upload”并将文件路径指定为参数。
问题是我没有那个文件的路径,因为我有它作为 base64 字符串。我无法为它生成路径,因为 nodeJS 没有方法 URL.createObjectURL 并且不可能对该方法进行 polyfiling。将该图像写入文件系统也不是解决方案,因为 Cloud Functions 是只读环境。
我尝试过的东西
Polyfiling URL.createObjectURL,但没有成功
使用 nodeJS 模块 FS 将图像从 REST API 写入文件系统,将它们上传到云存储,然后删除它们。
是否有任何解决此问题的方法,或者推荐的实现此类功能的方法?
解决方案
我的第二个解决方案(使用 fs 写入临时文件)几乎是正确的,但我忘记将文件目标指定为 /tmp
。在 Firebase Cloud Functions 中,除了 /tmp
只读存储之外的一切。
我需要完成什么
我需要从 rest API (base64) 获取图像并将单个图像写入 Firebase 云存储。图片写入成功后,将日志写入Firebase实时数据库。
有什么问题
好吧,我使用 AdminSDK 初始化了 Firebase 应用程序(云功能),因为我需要一些管理功能(例如绕过实时数据库规则)。根据 Firebase 文档,如果我使用 AdminSDK,那么为了操作云存储我必须使用“@google-cloud/storage”。
所以我在 documentation 中查找“@google-cloud/storage”,发现要上传文件,我必须调用方法“.upload”并将文件路径指定为参数。
问题是我没有那个文件的路径,因为我有它作为 base64 字符串。我无法为它生成路径,因为 nodeJS 没有方法 URL.createObjectURL 并且不可能对该方法进行 polyfiling。将该图像写入文件系统也不是解决方案,因为 Cloud Functions 是只读环境。
我尝试过的东西
Polyfiling URL.createObjectURL,但没有成功
使用 nodeJS 模块 FS 将图像从 REST API 写入文件系统,将它们上传到云存储,然后删除它们。
是否有任何解决此问题的方法,或者推荐的实现此类功能的方法?
解决方案
我的第二个解决方案(使用 fs 写入临时文件)几乎是正确的,但我忘记将文件目标指定为 /tmp
。在 Firebase Cloud Functions 中,除了 /tmp
只读存储之外的一切。