javaScript客户端签名直传

一.介绍

本文主要介绍如何基于POST Policy的使用规则在客户端通过JavaScript代码完成签名,然后通过表单直传数据到OSS。

二.客户端签名步骤

1.在客户端通过JavaScript代码完成签名,无需过多配置,即可实现直传,非常方便。但是客户端通过JavaScript把AccesssKeyID和AccessKeySecret写在代码里面有泄露的风险,建议采用服务端签名后直传

2.OSS为Bucket设置跨域规则以支持Post方法,

首先要OSS管理控制台设置CORS


3.如果上传后保持原来的文件名,字段改成‘key’:'${filename}'

修改前

new_multipart_params = { 
'key' : g_object_name, 
'policy': policyBase64,
 'OSSAccessKeyId': accessid, 
'success_action_status' : '200', //让服务端返回200,不然,默认会返回204 
'signature': signature,
 };

修改后

new_multipart_params = { 
'key' : 'abc/' + '${filename}',
 'policy': policyBase64,
 'OSSAccessKeyId': accessid,
 'success_action_status' : '200',
 //让服务端返回200,不然,默认会返回204
 'signature': signature, 
};

4.如果目录是后端返回的目录地址,需要和以下key拼接拼接

let new_multipart_params = { 
'key' : res.data.extend.ossMsg.objectName +'.' + fileSuffix, 
'policy': policyBase64,
 'OSSAccessKeyId': accessid,
 'success_action_status' : '200', //让服务端返回200,不然,默认会返回204 
'signature': signature,
 };

5.如果想在上传的时候设置成随机文件名,后缀保持和客户端文件一样,可以改为

function check_object_radio() {
 			g_object_name_type = 'local_name';
 }

6.可以将文件上传到指定目录下。下面的代码是将上传目录改成abc/,注意,目录必须以正斜线(/)结尾

function get_dirname() 
  {
      g_dirname = 'abc/'
   }

7.上传签名主要是对policyText进行签名,最简单的例子如下

var policyText = { 
    "expiration": "2023-01-01T12:00:00.000Z", //设置该Policy的失效时间,超过这个失效时间之后,就没有办法通过这个policy上传文件了
     "conditions": [ 
       		["content-length-range", 0, 1048576000] // 设置上传文件的大小限制
     ]
 };

三、API
JavaScript客户端签名直传

展开阅读全文

页面更新:2024-04-01

标签:客户端   斜线   控制台   文件名   服务端   规则   上传   代码   时间   目录

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top