前端使用oss包

1.跨域问题解决方法,配置来源为当前项目的活动域名
前端使用oss包_第1张图片

2.因为项目中不支持require(),所以使用import OSS from 'ali-oss';进行引入

3.最终的url
http://xxxx.oss-cn-beijing.aliyuncs.com/test/example.glb?accessKeyId=xxx&Expires=过期时间戳&Signature=xxxx&response-content-disposition=attachment%3B%20filename%3Dexample.glb&security-token=xxxxx

需求背景:
前端需要的图片/glb素材文件,需要加密存储,所以使用阿里的oss,帮忙生成一个临时的url。
临时url和永久的url区别:
临时的URL可以设置url的过期时间,在过期时间内下载可以一直使用,超过时间下载后链接失效,无法加载
永久的url是不存在失效问题,可以一直访问

参数处理:
这些参数都是通过服务接口下发的,因为当前要访问的资源是要加密的,所以服务会把stsToken/bucket两个参数进行xxTea加密,解密后调用api
region
accessKeyId
accessKeySecret
stsToken
refreshSTSTokenInterval
bucket

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'
});
注:这里的filename指的是oss上面的资源文件名,比如想访问的是test文件夹里面的examplefile.glb文件
// 配置响应头实现通过URL访问时自动下载文件,并设置下载后的文件名。
const filename = 'test/examplefile.glb' 
const response = {
  'content-disposition': `attachment; filename=${encodeURIComponent(filename)}`
}
// 填写Object完整路径。Object完整路径中不能包含Bucket名称。
// 设置URL的有效时长为3600,单位为秒。如果不设置有效时长,则默认值为1800。这个时间也最好由服务下发,和token的过期时间一致
const url = client.signatureUrl('exampleobject.txt', { response,expires: 3600 });
console.log(url);

你可能感兴趣的:(前端)