如果您需要管理OSS儲存空間、上傳下載檔案、管理資料、進行圖片處理等,可以先安裝OSS Node.js SDK。本文為您介紹如何安裝和使用OSS Node.js SDK。
前提條件
已開通阿里雲Object Storage Service服務。
已建立RAM使用者的AccessKey ID和AccessKey Secret。
由於雲帳號AccessKey擁有所有API的存取權限,建議使用RAM使用者的AccessKey。如果部署在服務端,請使用RAM或STS的方式進行API訪問或日常營運管控操作;如果部署在用戶端,請使用STS方式進行API訪問。詳情請參見存取控制
背景資訊
OSS Node.js SDK基於Node.js環境構建。
目前官網文檔中的demo基於SDK 6.X,如果SDK版本低於6.X,請參見5.X開發文檔,如需升級至6.X,請參見升級詳情。
安裝
OSS支援8.0.0及以上的Node.js版本。如果需要在Node.js低於8.0.0的環境中使用,請使用ali-oss 4.x版本。
使用npm安裝SDK開發包,安裝命令為npm install ali-oss --save。
如果使用npm遇到網路問題,建議使用淘寶提供的npm鏡像cnpm。
使用方式
Node.js SDK支援基於Promise
的非同步編程。您可以使用async/await
文法,或是使用then/catch
文法來處理Promise
對象。
async/await
通過async
和await
關鍵字,可以編寫出類似同步代碼的結構,它實際上是在Promise
對象上操作,使得非同步流程更加清晰。使用async/await
上傳檔案和下載檔案的程式碼範例如下:
const OSS = require('ali-oss');
// 初始化OSS用戶端。請將以下參數替換為您自己的配置資訊。
const client = new OSS({
region: 'yourregion', // 樣本:'oss-cn-hangzhou',填寫Bucket所在地區。
accessKeyId: process.env.OSS_ACCESS_KEY_ID, // 確保已設定環境變數OSS_ACCESS_KEY_ID。
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, // 確保已設定環境變數OSS_ACCESS_KEY_SECRET。
bucket: 'yourbucketname', // 樣本:'my-bucket-name',填寫儲存空間名稱。
});
async function uploadAndDownloadFile() {
try {
// 上傳檔案到OSS,'object'是OSS中的檔案名稱,'localfile'是本地檔案的路徑。
const uploadResult = await client.put('object', 'localfile');
console.log('上傳成功:', uploadResult);
// 從OSS下載檔案以驗證上傳成功。
const getResult = await client.get('object');
console.log('擷取檔案成功:', getResult);
} catch (error) {
console.error('發生錯誤:', error);
// 在此處添加錯誤處理邏輯。
}
}
uploadAndDownloadFile();
then/catch
類似Callback的方式,通過Promise
對象的then
方法來處理非同步作業成功的結果,以及使用catch
方法來處理可能出現的錯誤。使用then/catch
上傳檔案和下載檔案的程式碼範例如下:
const OSS = require('ali-oss');
// 初始化OSS用戶端。請將以下參數替換為您自己的配置資訊。
const client = new OSS({
region: 'yourregion', // 樣本:'oss-cn-hangzhou',填寫Bucket所在地區。
accessKeyId: process.env.OSS_ACCESS_KEY_ID, // 確保已設定環境變數OSS_ACCESS_KEY_ID。
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, // 確保已設定環境變數OSS_ACCESS_KEY_SECRET。
bucket: 'yourbucketname', // 樣本:'my-bucket-name',填寫儲存空間名稱。
});
// 使用OSS的put方法上傳檔案,然後鏈式調用then處理結果或捕獲錯誤。
client.put('object', 'localfile')
.then((uploadResult) => {
console.log('上傳成功:', uploadResult);
// 繼續下載檔案以驗證上傳成功。
return client.get('object');
})
.then((getResult) => {
console.log('擷取檔案成功:', getResult);
})
.catch((error) => {
console.error('發生錯誤:', error);
// 在此處添加錯誤處理邏輯。
});