全部產品
Search
文件中心

Object Storage Service:Node.js流式下載

更新時間:Feb 28, 2024

如果要下載的檔案太大,或者一次性下載耗時太長,您可以通過流式下載,一次處理部分內容,直到完成檔案的下載。

範例程式碼

以下代碼用於流式下載examplebucket中的exampleobject.txt檔案到本地D:\localpath路徑下的examplefile.txt檔案。

說明

使用getStream下載檔案時,返回的Readable Stream用於流式地處理檔案內容。

const OSS = require('ali-oss');
const fs = require('fs');

const client = new OSS({
  // yourRegion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
  region: 'yourRegion',
  // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  // 填寫Bucket名稱。
  bucket: 'examplebucket',
});

async function getStream () {
  try {
    // 填寫Object完整路徑。Object完整路徑中不能包含Bucket名稱。
    const result = await client.getStream('exampleobject.txt');
    console.log(result);
    // 填寫本地檔案的完整路徑。如果指定的本地檔案存在會覆蓋,不存在則建立。
    // 如果未指定本地路徑,則下載後的檔案預設儲存到樣本程式所屬專案對應本地路徑中。
    const writeStream = fs.createWriteStream('D:\\localpath\\examplefile.txt'); 
    result.stream.pipe(writeStream);
  } catch (e) {
    console.log(e);
  }
}

getStream()

相關文檔

  • 關於流式下載的完整範例程式碼,請參見GitHub樣本

  • 關於流式下載的API介面說明,請參見GetObject