我有一个程序允许用户将视频文件上传到 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 的本地系统中删除临时文件。不这样做最终会导致内存不足问题和随后的冷启动。
添加回答
举报
0/150
提交
取消