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

我有一个程序允许用户将视频文件上传到 Firebase 存储。如果文件不是 mp4,我会将其发送到第三方视频转换站点以将其转换为 mp4。他们使用 URL 和有关转换文件的其他信息点击了一个 webhook(firebase 函数)。

现在我正在尝试将文件下载到 firebase 函数中的 tmp 目录,然后将其发送到 firebase 存储。我有以下问题。

  1. 我可以绕过将文件下载到函数 tmp 目录并直接将其保存到存储中吗?如果是这样怎么办?

  2. 我目前无法下载到函数 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 

    }


  }


宝慕林4294392
浏览 120回答 1
1回答

跃然一笑

如上文评论部分所述,您可以使用Cloud Storage Node.js SDK将文件上传到 Cloud Storage。请查看SDK 客户端参考文档,您可以在其中找到有关此 Cloud Storage 客户端库的大量示例和更多信息。另外,我想提醒您,您可以使用管道绕过写入/tmp 。根据 Cloud Functions 的文档,“您可以通过创建读取流、将其传递给基于流的进程并将输出流直接写入 Cloud Storage 来处理 Cloud Storage 上的文件。”最后但同样重要的是,始终从 Cloud Function 的本地系统中删除临时文件。不这样做最终会导致内存不足问题和随后的冷启动。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript