cloud-oss

1.1.5 • Public • Published

cloud-oss

针对云服务器文件上传封装,主要功能:普通上传,分片上传,暂停上传,断点续传,取消上传等(目前就阿里云,后续会扩展华为云,腾讯云等)

使用文档

阿里云

华为云

腾讯云

阿里云

创建存储实例

createCloudOss(cloudType, options)

使用示例

import { createCloudOss } from "cloud-oss";

const cloudOss = await createCloudOss("Aliyun", {
  accessKeyId: uploadInfo.accessKeyId,
  accessKeySecret: uploadInfo.accessKeySecret,
  stsToken: uploadInfo.token,
  bucket: uploadInfo.bucketName,
});

参数

  • cloudType: 云服务类型:Aliyun
  • options {Object} 配置
    • accessKeyId {String} - 在阿里云控制台网站上创建的 Access Key。
    • accessKeySecret {String} - 创建的 Access Secret。
    • stsToken {String} - 用于临时授权的 Token,详见下文。
    • refreshSTSToken {Function} - 用于在 STS 信息过期时自动设置 stsToken、accessKeyId、accessKeySecret 的回调函数。返回值必须是包含 stsToken、accessKeyId、accessKeySecret 的对象。
    • refreshSTSTokenInterval {Number} - 刷新 STS Token 的时间间隔(毫秒),应该小于 STS 信息过期间隔,默认为 300000 毫秒(5 分钟)。
    • bucket {String} - 默认要访问的存储桶。如果没有存储桶,请首先使用 putBucket()创建一个。
    • endpoint {String} - OSS 区域域名。优先级高于 region。根据不同需求设置为外网域名、内网域名、加速域名等。请参考阿里云 OSS 区域与域名
    • region {String} - 存储桶数据的区域位置,请参考数据中心,默认为 oss-cn-hangzhou。
    • internal {Boolean} - 是否使用阿里云内部网络访问 OSS,默认为 false。如果您的服务器也在阿里云上运行,可以设置为 true 以节省大量费用。
    • secure {Boolean} - 指示 OSS 客户端使用 HTTPS(secure: true)还是 HTTP(secure: false)协议。
    • timeout {String|Number} - 所有操作的实例级超时时间,默认为 60 秒。
    • cname {Boolean} - 默认为 false,是否使用自定义域名访问 OSS。如果为 true,可以在 endpoint 字段中填写自定义域名。
    • isRequestPay {Boolean} - 默认为 false,是否开启存储桶的请求支付功能。如果为 true,将向 OSS 服务器发送头部 'x-oss-request-payer': 'requester'。详情请参见请求支付
    • useFetch {Boolean} - 默认为 false,仅在浏览器中有效。如果为 true,表示使用 fetch 模式上传对象,否则使用 XMLHttpRequest。
    • enableProxy {Boolean} - 启用代理请求,默认为 false。
    • proxy {String|Object} - 代理代理 URI 或选项,默认为 null。
    • retryMax {Number} - 在请求错误为网络错误或超时时,自动重试的最大次数。注意:不支持使用流(stream)的 put、putStream 和 append 操作,因为流只能消耗一次。
    • maxSockets {Number} - 允许每个主机的最大套接字数。默认为无限制。

返回值

  • cloudOss {Object} - 初始化后实例对象,拿到实例后访问 API

API

cloudOss.signatureUrl(name, options) 获取文件的预览或下载 URL

使用示例

cloudOss.signatureUrl('temp/images/xxx.png').then(res => {
  console.log('获取文件的预览或下载URL:'res)
}).catch(err => {
  console.error('获取失败:'err)
})

参数:

  • name {String}:存储在 OSS 上的对象名称。
  • options {Object}:可选参数。
    • expires {Number}:过期秒数后,URL 将失效(默认为 1800 秒)。
    • method {String}:HTTP 方法(默认为 'GET')。
    • Content-Type {String}:设置请求内容类型。
    • process {String}:图像处理参数,将与 x-oss-process 一起发送,例如:{process: 'image/resize,w_200'}。
    • trafficLimit {Number}:流量限制,范围:819200~838860800。
    • subResource {Object}:URL 中的附加签名参数。
    • response {Object}:设置下载的响应头。
    • content-type {String}:设置响应内容类型。
    • content-disposition {String}:设置响应内容 disposition。
    • cache-control {String}:设置响应缓存控制。
    • callback {Object}:设置操作的回调。
      • url {String}:设置回调的 URL。
      • host {String}:设置回调的主机。
      • body {String}:设置回调的主体。
      • contentType {String}:设置主体的类型。
      • customValue {Object}:设置回调的自定义值,例如:{var1: value1, var2: value2}。
    • strictObjectNameValidation {boolean}:严格验证对象名称的标志,默认为 true。

返回值

  • res {string} - URL 地址

cloudOss.put(options) 简单上传

使用示例

  const onProgress = ({ percent }) => {
    console.log('当前上传进度:', percent)
  }
  cloudOss.put({
      name,
      file,
      action: 'https://xxx.xxxx.com.cn',
      onProgress,
    }).then((res) => {
      console.log("then:res",res);
    }).catch((err) => {
      console.log("catch:catch", err);
    });

参数

  • options {Object} - 配置参数。
    • name {String} - 对象名称,存储在 OSS 上。
    • file {File(仅支持浏览器)| Blob(仅支持浏览器)} 。
    • action {String} - 上传路径,例如:https://xxx.xxxx.com.cn
    • onProgress {Function} - 请求进度回调,会返回{ percent:100 } 进度对象
    • expiration {String} - 过期时间,例如:'2024-01-15T07:14:57.788Z' 默认:一个小时

返回值

  • res {Object} - 信息。
    • name {Number} - 对象名称。

cloudOss.multipartUpload(name, file, options) 分片上传

使用示例

const onProgress = ({ percent }) => {
  console.log('当前上传进度:', percent)
}

cloudOss.multipartUpload('temp/video/xxx.mp4', file, {
  onProgress
}).then(res => {
  console.log('上传成功后信息:'res)
}).catch(err => {
  console.error('上传失败:'err)
})

参数

  • name {String} - 对象名称
  • file {String|File(仅支持浏览器)|Blob(仅支持浏览器)|Buffer} - 文件路径或 HTML5 Web 文件或 Web Blob 或内容缓冲区
  • options {Object} - 可选参数
    • parallel {Number} - 并行上传的分片数量 默认:4
    • partSize {Number} - 每个分片的建议大小,默认为 1024 * 4(4MB),最小为 100 _ 1024(100KB)
    • timeout {Number} - 请求超时的毫秒数 默认:120000
    • onProgress {Function} - 请求进度回调,会返回{ percent:100 } 进度对象
    • onCancelComplete {Function} - 暂停成功后回调

返回值

  • res {Object} - 响应信息
    • status {Number} - 响应状态码
    • headers {Object} - 响应头信息
    • size {Number} - 响应大小
    • rt {Number} - 请求总耗时(毫秒)
    • bucket {String} - 存储桶名称
    • name {String} - 存储在 OSS 上的对象名称
    • etag {String} - 对象 ETag,包含引号,例如:"5B3C1A2E053D763E1B002CC607C5A0FE"
    • data {Object} - 回调服务器响应数据,SDK 使用 JSON.parse()解析后返回

cloudOss.abort() 取消上传(注:取消成功后会走catch)

使用示例

const onProgress = ({ percent }) => {
  console.log('当前上传进度:', percent)
}

cloudOss.multipartUpload('temp/video/xxx.mp4', file, {
  onProgress
}).then(res => {
  console.log('上传成功后信息:'res)
}).catch(err => {
  console.error('上传失败:'err)
})

// 5秒后取消上传
setTimeout(() => {
  cloudOss.abort();
}, 5000)

参数

返回值

cloudOss.cancel() 暂停上传(注:分片上传的情况下有效)

使用示例

const onProgress = ({ percent }) => {
  console.log('当前上传进度:', percent)
}

cloudOss.multipartUpload('temp/video/xxx.mp4', file, {
  onProgress
}).then(res => {
  console.log('上传成功后信息:'res)
}).catch(err => {
  console.error('上传失败:'err)
})

// 5秒后暂停上传
setTimeout(() => {
  cloudOss.cancel();
}, 5000)

参数

返回值

cloudOss.recovery() 恢复上传(注:分片上传的情况下有效)

使用示例

const onProgress = ({ percent }) => {
  console.log('当前上传进度:', percent)
}

cloudOss.multipartUpload('temp/video/xxx.mp4', file, {
  onProgress
}).then(res => {
  console.log('上传成功后信息:'res)
}).catch(err => {
  console.error('上传失败:'err)
})

// 5秒后暂停上传
setTimeout(() => {
  cloudOss.cancel();
}, 5000)

// 10秒后继续上传
setTimeout(() => {
  cloudOss.recovery();
}, 5000)

参数

返回值

华为云

腾讯云

Readme

Keywords

Package Sidebar

Install

npm i cloud-oss

Weekly Downloads

1

Version

1.1.5

License

MIT

Unpacked Size

178 kB

Total Files

7

Last publish

Collaborators

  • npm-heqiang