簡體   English   中英

通過 Firebase 函數下載文件到 Firebase 存儲

[英]Download file to Firebase Storage via Firebase Functions

我有一個程序,允許用戶將視頻文件上傳到 firebase 存儲。 如果文件不是 mp4,我會將其發送到第三方視頻轉換站點以將其轉換為 mp4。 他們使用 URL 和有關轉換后的文件的其他信息點擊了 webhook(firebase 函數)。

現在我正在嘗試將文件下載到 firebase 函數中的 tmp 目錄,然后將其發送到 firebase 存儲。 我有以下問題。

  1. 我可以繞過將文件下載到函數 tmp 目錄並直接將其保存到存儲中嗎? 如果是這樣怎么辦?

  2. 我目前無法下載到函數 tmp dir 下面是我的代碼。 function 正在返回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 
    }

  }

如上文評論部分所述,您可以使用Cloud Storage Node.js SDK將文件上傳到 Cloud Storage。

請查看SDK 客戶端參考文檔,您可以在其中找到有關此 Cloud Storage 客戶端庫的大量示例和更多信息。

另外,我想提醒您,您可以使用管道繞過寫入/tmp 根據 Cloud Functions 的文檔“您可以通過創建讀取 ZF7B44CFFAFD5C52223D5498196C8A2E7BZ,將其傳遞給基於流的進程,然后將 output ZF7B44CFAFD5C52223D7D5498196C8A2 直接寫入 Cloud Storage 來處理 Cloud Storage 上的文件。”

最后但同樣重要的是,始終從 Cloud Function 的本地系統中刪除臨時文件。 不這樣做最終會導致內存不足問題和隨后的冷啟動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM