3.0.3 • Published 2 years ago

youzanyun-oss-sdk v3.0.3

Weekly downloads
-
License
ISC
Repository
gitlab
Last release
2 years ago

有赞 OSS node 客户端

有赞 OSS 下的 Node 客户端,提供 put、putStream、get、getStream、head、delete 方法

使用姿势

安装依赖

  yarn add @youzan/youzan-oss -S

Node 里使用

在 3.x 版本中,导出方式已订正为 ESM 标准导出,使用 CommonJS 的同学注意

上传文件到 OSS

CJS

  const OSS = require('@youzan/youzan-oss').default;

  // 实例化
  const client = new OSS({
    namespace: 'xxxx', // 需要申请
    env: 'prod',       // 可选。环境
  });

  // 上传文件,xxx 可以是文件路径、Buffer 或者是可读流
  // key 是用来查找改资源文件的钥匙
  client.put('key', 'xxxxx')
    .then(url => {
      console.log('put done. The resource url is %s', url);
    })
    .catch((err) => {
      console.log(err);
    })

ESM

import OSS from '@youzan/youzan-oss'

const client = new OSS({
  namespace: 'xxxx',
  env: 'prod'
})

const url = await client.put('key', 'xxxxx')

从 OSS 上获取文件

  const OSS = require('@youzan/youzan-oss').default;

  // 实例化
  const client = new OSS({
    namespace: 'xxxx' // 需要申请
  });

  // 查找文件
  // key 是上传时定义的
  // xxxx 可传,文件地址,传入后把 OSS 上的文件写入到此
  client.get('key', 'xxxxx')
    .then(() => {
      console.log('get done');
    })
    .catch((err) => {
      console.log(err);
    })

API 介绍

OSS 实例化

目前实例化时值需要传入 namespace 即可,namespace 需要找运维申请

使用方法:

  const client = new OSS({
    namespace: 'xxxx' // 需要申请
  });

参数:

参数类型描述是否必传默认值备注
namespacestring命名空间需要申请
envstring环境NODE_ENV
hoststring请求的 host 域名src/constants/index不传时会根据环境获取

put 方法

put 方法用来将本地文件上传到 OSS

使用方法:

  client.put('object-key', file)
    .then(url => {
      console.log('put done. The resource url is %s', url);
    })
    .catch((err) => {
      console.log(err);
    })

参数

参数类型描述是否必传默认值备注
keystring文件对应的 key每个上传的文件对应的 key
fileBuffer、ReadStream、string需要上传的文件可以是文件路径、Buffer、可读流
optionsurllib.RequestOptions请求参数详见:https://www.npmjs.com/package/urllib

stream 流式上传

putStream 方法用来将本地大文件上传到 OSS,可监听进度
(适合大文件)

使用方法:

  const stream = client.putStream('object-key', file);
  let total = 0;
  let count = 0;

  stream.on('progress', (contentLength, totalLength) => {
    total += contentLength;
    count += 1;
    console.log(total + '------' + count);
  });

  stream.on('finish', url => {
    console.log('put done. The resource url is %s', url);
    console.log('finish', total + '------' + count)
  });

  stream.on('error', (err) => console.log(err));

参数

参数类型描述是否必传默认值备注
keystring文件对应的 key每个上传的文件对应的 key
fileReadStream、string需要上传的文件可以是文件路径、可读流
optionsurllib.RequestOptions请求参数详见:https://www.npmjs.com/package/urllib

get 方法

get 方法用来获取 OSS 上的文件

使用方法1 - 存储到文件里

  client.get('object-key', file)
    .then(() => {
      console.log('done');
    })
    .catch((err) => {
      console.log(err);
    })

使用方法2 - 存储到内存中

  client.get('object-key')
    .then((buf) => {
      // 返回 Buffer
      console.log(buf');
    })
    .catch((err) => {
      console.log(err);
    })

参数

参数类型描述是否必传默认值备注
keystring文件对应的 key每个上传的文件对应的 key
filestring需要写入的文件路径如果传入,将 OSS 上的内容写入到该文件
optionsurllib.RequestOptions请求参数详见:https://www.npmjs.com/package/urllib

stream 流式获取方法

getStream 通过流的形式获取 OSS 文件,可获取下载进度。常用来获取大文件

使用方法

  const stream = client.getStream('object-key', file);
  let total = 0;

  stream.on('progress', (contentLength, totalLength) => {
    total += contentLength;

    console.log('获取进度为:'  + total / totalLength);
  });

  stream.on('finish', () => console.log('获取完毕'));

  stream.on('error', (err) => console.log('获取出错' + err));

参数

getStream 入参和上面 get 相同。返回的实例可监听 on、finish、error

参数类型描述是否必传默认值备注
keystring文件对应的 key每个上传的文件对应的 key
filestring、WriteStream需要写入的文件如果传入,将 OSS 上的内容写入到该文件或可写流
optionsurllib.RequestOptions请求参数详见:https://www.npmjs.com/package/urllib

head 方法

head 方法用来获取 OSS 上的文件信息

使用方法:

  client.head('object-key')
    .then((info) => {
      console.log(info);
    })
    .catch((err) => {
      console.log(err);
    })

参数

参数类型描述是否必传默认值备注
keystring文件对应的 key每个上传的文件对应的 key

delete 方法

delete 会删除 OSS 上的文件

使用方法:

  client.delete('object-key')
    .then(() => {
      console.log('delete done');
    })
    .catch((err) => {
      console.log(err);
    })

参数

参数类型描述是否必传默认值备注
keystring文件对应的 key每个上传的文件对应的 key

错误信息

codemessage备注
FILE_OUT_OF_SIZE文件超过限制默认限制 1 G
UNKNOWN_HOST当前 host 不是标准的环境变量host 必须是 qa pre prod test officeProd 中的一个