如果要下載的檔案太大,或者一次性下載耗時太長,您可以通過流式下載,一次處理部分內容,直到完成檔案的下載。
範例程式碼
以下代碼用於流式下載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()