全部产品
Search
文档中心

对象存储 OSS:Node.js安装

更新时间:Dec 26, 2023

如果您需要管理OSS存储空间、上传下载文件、管理数据、进行图片处理等,可以先安装OSS Node.js SDK。本文为您介绍如何安装和使用OSS Node.js SDK。

前提条件

  • 已开通阿里云对象存储OSS服务。

  • 已创建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);
    // 在此处添加错误处理逻辑。
  });