对象存储服务的 XML JS SDK 资源 github 地址:tencentyun/cos-js-sdk-v5。
演示示例 Demo 代码地址:XML JS SDK CSP Demo。
关于文章中出现的 SecretId、SecretKey、Bucket 等名称的含义和获取方式请参考:COS 术语信息
由于签名计算放在前端会暴露 SecretId 和 SecretKey,我们把签名计算过程放在后端实现,前段通过 ajax 向后端获取签名结果,正式部署时请再后端加一层自己网站本身的权限检验。其他语言,请参照对应的 XML SDK 文档。
<input id="file-selector" type="file">
<script src="dist/cos-js-sdk-v5.min.js"></script>
<script>
var Bucket = 'test-1250000000';
var Region = 'ap-guangzhou';
// 初始化实例
var cos = new COS({
CompatibilityMode: true,
ServiceDomain: 'http://cos.default.xxx.com', // 这里替换成 getService 域名
Domain: 'http://{Bucket}.cos.{Region}.xxx.com', 这里替换成 API 域名格式模板
getAuthorization: function (options, callback) {
var url = './auth-json.php?method=' + options.Method + '&path=' + encodeURIComponent('/' + options.Key);
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onload = function (e) {
callback(e.target.responseText);
};
xhr.send();
},
});
// 监听选文件
document.getElementById('file-selector').onchange = function () {
var file = this.files[0];
if (!file) return;
// 分片上传文件
cos.sliceUploadFile({
Bucket: Bucket,
Region: Region,
Key: file.name,
Body: file,
}, function (err, data) {
console.log(err, data);
});
};
</script>
支持 webpack 打包的场景,可以用 npm 引入作为模块
npm i cos-js-sdk-v5 --save