一.介绍
本文主要介绍如何基于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, };
【javaScript客户端签名直传】修改后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] // 设置上传文件的大小限制] };
推荐阅读
- QQ空间签名档组件 空间签名档
- 受伤的个性签名(感情受伤的句子说说心情)
- 光棍节单身狗个性签名 光棍节个性签名
- 小三|彻底死心!樊小慧老公和小三亲密照被扒,樊小慧改签名令人心疼
- 经典唯美的个性签名 唯美个性签名
- 朱一龙|?央视海霞找朱一龙签名!弯腰送纸笔显谦虚,男方急忙起身十分恭敬!
- 朱一龙|央视海霞找朱一龙签名:俩人高情商、彬彬有礼的行为,引网友热议
- 签名个性QQ,qq个性签名 qq签名-
- 很拽很霸气的个性签名 论坛个性签名
- 伤感的非主流经典语录简短 非主流伤心个性签名