断点续传【准备工作】

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

准备工作

  • 使用RAM用户或STS方式访问

    由于阿里云账号AccessKey拥有所有API访问权限,建议遵循阿里云安全最佳实践。如果部署在服务端,可以使用RAM用户或STS来进行API访问或日常运维管控操作,如果部署在客户端,请使用STS方式来进行API访问。更多信息,请参见访问控制

  • 设置跨域资源共享(CORS)

    通过浏览器直接访问OSS时,CORS配置规则要求如下:

    • 来源 :设置精准域名(例如https://www.aliyun.com)或带有通配符星号(*)的域名(例如https://*.aliyun.com)。

    • 允许Methods :请根据实际使用场景,选择不同的Methods。例如分片上传时,设置为PUT ;删除文件时,设置为DELETE

    • 允许Headers :设置为*

    • 暴露Headers :请根据实际使用场景,设置暴露的Headers。例如设置为ETagx-oss-request-idx-oss-version-id

具体操作,参见跨域设置。

注意事项:

OSS Browser.js SDK通过BrowserifyBabel产生适用于浏览器的代码。由于浏览器环境的特殊性,无法使用以下功能:

  • 流式上传:浏览器中无法设置chunked编码,建议使用分片上传替代。

  • 操作本地文件:浏览器中不能直接操作本地文件系统,建议使用签名URL的方式下载文件。

  • 由于OSS暂时不支持Bucket相关的跨域请求,建议在控制台执行Bucket相关操作。

下载SDK:

目前官网文档中的demo都是基于SDK 6.x,版本低于6.x的可参考5.x开发文档,如果要升级到6.x请参考升级文档

安装SDK:

  • 支持的浏览器

    • IE(>=10)

    • Edge

    • 主流版本的Chrome、Firefox、Safari

    • 主流版本的Android、iOS、Windows Phone系统默认浏览器

  • 安装方式

    您可以通过以下任意方式安装Browser.js SDK

  • 浏览器引入(不推荐)

    复制代码
    <!-- 引入在线资源 -->
    <script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.1.min.js"></script>      
    <!-- 引入本地资源 -->
    <script src="./aliyun-oss-sdk-6.18.1.min.js"></script>
  • 使用npm安装SDK开发包 npm install ali-oss

成功完成后,即可使用import或require进行引用。由于浏览器中原生不支持require模式,因此需要在开发环境中配合相关的打包工具,例如webpackbrowserify等。

复制代码
const OSS = require('ali-oss');

const client = new OSS({
    // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
    region: 'yourRegion',
    // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
    accessKeyId: 'yourAccessKeyId',
    accessKeySecret: 'yourAccessKeySecret',
    // 从STS服务获取的安全令牌(SecurityToken)。
    stsToken: 'yourSecurityToken',
    refreshSTSToken: async () => {
    // 向您搭建的STS服务获取临时访问凭证。
      const info = await fetch('your_sts_server');
      return {
        accessKeyId: info.accessKeyId,
        accessKeySecret: info.accessKeySecret,
        stsToken: info.stsToken
      }
    },
    // 刷新临时访问凭证的时间间隔,单位为毫秒。
    refreshSTSTokenInterval: 300000,
    // 填写Bucket名称。
    bucket: 'examplebucket'
});

使用方式:

OSS Browser.js SDK支持同步和异步的使用方式。同步和异步方式均使用new OSS()创建client

1、同步方式

基于ES7规范的async/await,使得异步方式同步化。

以下以同步方式上传文件为例

复制代码
// 实例化OSS Client。
const client = new OSS(...);

async function put () {
  try {
    // object表示上传到OSS的文件名称。
    // file表示浏览器中需要上传的文件,支持HTML5 file和Blob类型。
    const r1 = await client.put('object', file);
    console.log('put success: %j', r1);
    const r2 = await client.get('object');
    console.log('get success: %j', r2);
  } catch (e) {
    console.error('error: %j', e);
  }
}

put();                    

2、异步方式

与Callback方式类似,API接口返回Promise,使用then()处理返回结果,使用catch()处理错误。

以下以异步方式下载文件为例

复制代码
// 实例化OSS Client。
const client = new OSS(...);

// object表示上传到OSS的文件名称。
// file表示浏览器中需要上传的文件,支持HTML5 file和Blob类型。
client.put('object', file).then(function (r1) {
  console.log('put success: %j', r1);
  return client.get('object');
}).then(function (r2) {
  console.log('get success: %j', r2);
}).catch(function (err) {
  console.error('error: %j', err);
});                    
相关推荐
甘露s12 小时前
深入理解 Redis:事务、持久化与过期策略全解析
数据库·redis
珠海西格13 小时前
远动通信装置为何是电网安全运行的“神经中枢”?
大数据·服务器·网络·数据库·分布式·安全·区块链
小宇的天下13 小时前
Calibre 3Dstack --每日一个命令day18【floating_trace】(3-18)
服务器·前端·数据库
星空露珠13 小时前
速算24点检测生成核心lua
开发语言·数据库·算法·游戏·lua
what丶k13 小时前
SpringBoot3 缓存抽象深度实践:Caffeine+Redis多级缓存,穿透/雪崩/击穿防御全方案
数据库·redis·缓存
咖啡の猫13 小时前
Redis简单介绍
数据库·redis·缓存
-XWB-13 小时前
【Oracle】Oracle诊断系列(4/6):表空间与对象管理——存储优化与空间规划
数据库·oracle
山峰哥13 小时前
SQL优化全解析:从索引策略到查询性能飞跃
大数据·数据库·sql·编辑器·深度优先
葫三生13 小时前
存在之思:三生原理与现象学对话可能?
数据库·人工智能·神经网络·算法·区块链
不凉帅13 小时前
NO.6 数据库设计基础知识
数据库·分布式数据库·软考·数据库设计