全部產品
Search
文件中心

Object Storage Service:Node.js安裝

更新時間:Feb 28, 2024

如果您需要管理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,請參見升級詳情

SDK源碼請參見GitHub,更多資訊請參見API文檔

安裝

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

通過asyncawait關鍵字,可以編寫出類似同步代碼的結構,它實際上是在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);
    // 在此處添加錯誤處理邏輯。
  });