为了账号安全,请及时绑定邮箱和手机立即绑定

通过 Firebase 函数将文件下载到 Firebase 存储

通过 Firebase 函数将文件下载到 Firebase 存储

宝慕林4294392 2022-11-11 14:03:02
我有一个程序允许用户将视频文件上传到 Firebase 存储。如果文件不是 mp4,我会将其发送到第三方视频转换站点以将其转换为 mp4。他们使用 URL 和有关转换文件的其他信息点击了一个 webhook(firebase 函数)。现在我正在尝试将文件下载到 firebase 函数中的 tmp 目录,然后将其发送到 firebase 存储。我有以下问题。我可以绕过将文件下载到函数 tmp 目录并直接将其保存到存储中吗?如果是这样怎么办?我目前无法下载到函数 tmp dir 下面是我的代码。函数正在返回Function execution took 6726 ms, finished with status: 'crash'export async function donwloadExternalFile(url:string, fileName:string) {    try {              const axios  = await import('axios')        const fs = await import('fs')          const workingDir = join(tmpdir(), 'downloadedFiles')        const tmpFilePath = join(workingDir, fileName)         const writer = fs.createWriteStream(tmpFilePath);        const response = await axios.default.get(url, { responseType: 'stream' })        response.data.pipe(writer);        await new Promise((resolve, reject) => {            writer.on('error', err => {                writer.close();                reject(err);            });            writer.on('close', () => {                resolve();            });        });        return     } catch (error) {        throw error     }  }
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

如上文评论部分所述,您可以使用Cloud Storage Node.js SDK将文件上传到 Cloud Storage。

请查看SDK 客户端参考文档,您可以在其中找到有关此 Cloud Storage 客户端库的大量示例和更多信息。

另外,我想提醒您,您可以使用管道绕过写入/tmp 。根据 Cloud Functions 的文档“您可以通过创建读取流、将其传递给基于流的进程并将输出流直接写入 Cloud Storage 来处理 Cloud Storage 上的文件。”

最后但同样重要的是,始终从 Cloud Function 的本地系统中删除临时文件。不这样做最终会导致内存不足问题和随后的冷启动。


查看完整回答
反对 回复 2022-11-11
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号