本文介绍如何在Node.js环境中快速使用OSS服务,包括查看Bucket列表、查看文件列表、上传/下载文件和删除文件。

为了方便修改,本文会新建一个app.js,以下功能演示代码都写在这个文件中。

安装SDK

在工作目录安装ali-oss

npm install ali-oss
  • 使用同步方式

    由于SDK基于ES6开发,采用async/await能够异步编程同步化。

  • 使用异步方式

    为了支持callback的使用方式,SDK同时也提供了异步的基于Promise的接口,使用上类似callback,具体可参考这篇博客

    下面的文档将以同步的方式为例。

初始化Client

创建一个文件:app.js并写入下面的内容:

let OSS = require('ali-oss');

let client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>'
});

其中region参数是指您申请OSS服务时的区域,例如oss-cn-hangzhou。完整的区域列表可以在OSS服务节点查看。

说明 如果所使用的endpoint不在上述列表中,可以通过以下参数指定endpoint:
  • internal: 配合region使用,如果指定internaltrue,则访问内网节点
  • secure: 配合region使用,如果指定了securetrue,则使用HTTPS访问
  • endpoint: 例如http://oss-cn-hangzhou.aliyuncs.com,如果指定了 endpoint,则region会被忽略,endpoint可以指定HTTPS,也可以是IP形式
  • cname: 配合endpoint使用,如果指定了cnametrue,则将endpoint视为用户 绑定的自定义域名
  • bucket: 如果未指定bucket,则进行Object相关的操作时需要先调用 useBucket接口(只需要调用一次)
  • timeout: 默认为60秒,指定访问OSS的API的超时时间

查看Bucket列表

app.js末尾添加如下内容,使用listBuckets接口查看Bucket列表:

async function listBuckets () {
  try {
    let result = await client.listBuckets();
  } catch(err) {
    console.log(err)
  }
}

listBuckets();

运行并查看结果:node app.js

查看文件列表

修改app.js,使用list接口查看文件列表:

client.useBucket('Your bucket name');
async function list () {
  try {
    let result = client.list({
      'max-keys': 5
    })
    console.log(result)
  } catch (err) {
    consol.log (err)
  }
}
list();

使用node app.js运行并查看结果。

上传一个文件

修改app.js,使用put接口上传一个文件:

client.useBucket('Your bucket name');

async function put () {
  try {
    let result = await client.put('object-name', 'local file');
    console.log(result);
   } catch (err) {
     consol.log (err);
   }
}

put();

下载一个文件

修改app.js,使用get接口下载一个文件:

async function get () {
  try {
    let result = await client.get('object-name');
    console.log(result);
  } catch (err) {
    consol.log (err);
  }
}

get();

删除一个文件

修改app.js,使用delete接口删除一个文件:

async function delete () {
  try {
    let result = await client.delete('object-name');
    console.log(result);
  } catch (err) {
    console.log (err);
  }
}

delete();

了解更多