cos-js-sdk-v5
Version:
JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)
102 lines (93 loc) • 3.52 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上传限制 Content-Type</title>
<style>
h1, h2 {
font-weight: normal;
}
#msg {
margin-top: 10px;
}
</style>
</head>
<body>
<h1>上传限制 Content-Type</h1>
<input id="fileSelector" type="file">
<input id="submitBtn" type="submit">
<div id="msg"></div>
<script src="../dist/cos-js-sdk-v5.js"></script>
<script>
(function () {
// 计算签名
var getUploadSign = function (options, callback) {
var url = '/uploadSign?filename=' + encodeURIComponent(options.filename) + '&_=' + Date.now();
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.onload = function (e) {
var token;
try {
token = (new Function('return ' + xhr.responseText))();
} catch (e) {}
if (token) {
callback(null, token);
} else {
console.error(xhr.responseText);
callback('获取签名出错');
}
};
xhr.onerror = function (e) {
callback('获取签名出错');
};
xhr.send();
};
// 上传文件
var uploadFile = function (file, callback) {
getUploadSign({ filename: file.name }, function (err, info) {
if (err) {
alert(err);
return;
}
var signMap = info.signMap;
var mimeLimit = info.mimeLimit;
var allowActions = ['ListMultipartUploads', 'ListParts', 'InitiateMultipartUpload', 'UploadPart', 'CompleteMultipartUpload', 'PutObject'];
var cos = new COS({
getAuthorization: function (opt, cb) {
var action = opt.Scope[0].action.split(':')[1];
if (allowActions.indexOf(action) === -1) return console.error('action not allow');
var auth = signMap[action];
cb({ Authorization: auth });
},
});
cos.uploadFile({
Bucket: info.bucket,
Region: info.region,
Key: info.key,
Body: file,
SliceSize: 1024 * 1024 * 8,
ChunkSize: 1024 * 1024 * 8,
Headers: {
'x-cos-mime-limit': mimeLimit,
},
}, function (err, data) {
callback(err, data);
});
});
};
// 监听表单提交
document.getElementById('submitBtn').onclick = function (e) {
var file = document.getElementById('fileSelector').files[0];
if (!file) {
document.getElementById('msg').innerText = '未选择上传文件';
return;
}
file && uploadFile(file, function (err, data) {
console.log(err || data);
document.getElementById('msg').innerText = err ? '上传失败:' + err.code + '(' + err.message + ')' : ('上传成功,ETag=' + data.ETag);
});
};
})();
</script>
</body>
</html>