ks3-js-sdk
Version:
js sdk for ks3
322 lines (297 loc) • 7.73 kB
JavaScript
// config 替换成自己的存储桶和数据中心信息
var config = {
bucket: '',
region: '',
AK: '',
SK: '',
};
// 需要接收配置参数
var ks3 = new KS3(config);
var util = {
//创建指定大小的文件
createFile: function (options) {
var buffer = new ArrayBuffer(options.size || 0);
var arr = new Uint8Array(buffer);
[].forEach.call(arr, function (char, i) {
arr[i] = 0;
});
var opt = {};
options.type && (opt.type = options.type);
var blob = new Blob([buffer], options);
return blob;
},
// 选本地文件
selectLocalFile: function (onChange) {
var id = 'file_selector';
var input = document.createElement('input');
input.style = 'width:0;height:0;border:0;margin:0;padding:0;';
input.type = 'file';
input.id = id;
input.onchange = function (e) {
var files = this.files;
if (!files.length) return;
onChange && onChange(files);
document.body.removeChild(input);
};
document.body.appendChild(input);
input.click();
},
};
// 页面初始化
initPage();
// 打印result
function logResult(params){
var args = [].map.call(arguments, function (v) {
return typeof v === 'object' ? JSON.stringify(v, null, 2) : v;
});
var text = args.join(' ');
var resultDiv = document.querySelector('.result');
var div = document.createElement('div');
div.innerText = text;
resultDiv.appendChild(div);
resultDiv.scrollTop = resultDiv.scrollHeight;
}
//列举文件列表
function listObjects(){
ks3.listObjects({
'delimiter':'/',
'max-keys': '500',
}).then(res => {
console.log(res);
logResult('listObjects:', res);
});
}
//获取object元数据
function headObject(){
ks3.headObject({
'key': '页面1-5.png'
}).then(res => {
console.log(res);
logResult('headObject:', res);
});
}
//获取object
function getObject(){
ks3.getObject({
'key': 'demo',
headers: {
Range: 'bytes=0-4'
}
}).then(res => {
console.log(res);
logResult('getObject:', res);
});
}
function getObjectUrl(){
ks3.getObjectUrl({
'key': 'IMG_7DBACC50C65A-1.jpeg',
'expires': 5*60,
'method': 'DELETE',
'Content-length' : 0,
}).then(res => {
console.log(res);
logResult('getObjectUrl:', res);
});
}
//删除目标对象
function delObject(){
ks3.delObject({
'key': '管控平台.png'
}).then(res => {
logResult('delObject:', res);
});
}
//解冻
function restoreObject(){
ks3.restoreObject({
'key': '管控平台.png'
}).then(res => {
console.log(res);
logResult('restoreObject:', res);
});
}
//上传文件
function putObject(){
let filename = 'testPutObject.zip';
var blob = util.createFile({size: 1024 * 1024 * 1});
ks3.putObject({
'key': filename,
// 'file': blob,
encryption: true,
'progress': function(e1,e2){
logResult(e1)
}
}).then(res => {
console.log(res);
logResult('putObject res:', res);
})
}
//追加上传
function appendObject(){
let filename = 'testjs.zip';
var blob = util.createFile({size: 1024 * 1024 * 1});
ks3.appendObject({
'key': filename,
'file': blob,
'progress': function(e1,e2){
logResult(e1)
},
position: 0,
encryption: true
}).then(res => {
console.log(res);
logResult('appendObject res:', res);
})
}
// 分块上传
function uploadMultiPart(){
util.selectLocalFile(function(file){
console.log('file:', file);
var file = file[0];
console.log(file)
ks3.uploadMultiPart({
key: file.name,
file: file,
encryption: true
}, function(res){
console.log(res)
logResult('uploadMultiPart:', res);
})
})
}
// 查看已上传的分块
function listParts(){
ks3.listParts({
uploadId: '9156245afd564d6395d488c26b8d517d',
key: '57M-copy.pdf'
}).then(res => {
console.log(res)
logResult('listParts:', res);
});
}
// 取消已上传块
function abortMultipartUpload(){
ks3.abortMultipartUpload({
uploadId: '9156245afd564d6395d488c26b8d517d',
key: 'ToDesk_4.0.1.0.zip'
}).then(res=> {
logResult('abortMultipartUpload:', res);
})
}
// 查询正在进行的分块上传
function listMultipartUploads(){
ks3.listMultipartUploads({}).then(res => {
logResult('listMultipartUploads:', res);
})
}
// 查询object下的正在上传的分块
function getObjectPartUploads(){
ks3.getObjectPartUploads({
key: '/'
}, function(err, data){
logResult('getObjectPartUploads', err || data);
})
}
// copy 小文件复制
function putObjectCopy(){
ks3.putObjectCopy({
key: 'index.html',
sourceBucket: 'zwy-test',
sourceKey: 'demo.txt',
encryption: true,
headers: {
'content-type': ''
}
}).then(res => {
logResult('putObjectCopy:', res);
})
}
// copy 大文件复制
function uploadPartCopy(){
ks3.uploadPartCopy({
key: 'indexdemo.txt',
// sourceBucket: 'wyr123',
sourceBucket: 'zwy-test',
sourceKey: '57M.pdf',
// sourceKey: 'demo.txt',
// encryption: true,
headers: {
'content-type': 'kjnsj'
}
}, function(res){
console.log(res)
})
}
// 修改存储类型
function modifyStorageClass(){
ks3.modifyStorageClass({
storageClass: 'STANDARD_IA',
key: '页面1-5.png',
}).then(res => {
logResult('modifyStorageClass:', res);
})
}
//获取文件文件的权限
function getObjectAcl(){
ks3.getObjectAcl({
key: '57M.pdf'
}).then(res => {
logResult('getObjectAcl:', res);
})
}
//修改文件文件的权限
function putObjectAcl(){
ks3.putObjectAcl({
key: '57M.pdf',
acl: 'private',
bucket: 'xxx',
region: 'BEIJING'
}).then(res => {
logResult('putObjectAcl:', res);
})
}
function uploadFile(){
ks3.uploadFile({
key: 'test.txt',
body: 'this is content',
headers: {}
}, function(res){
console.log(res)
logResult('uploadFile:', res);
})
}
function initPage(){
var buttons = [
'getObjectUrl',
'listObjects',
'headObject',
'getObject',
'putObject',
'appendObject',
'delObject',
'restoreObject',
'putObjectCopy',
'uploadPartCopy-大文件分块复制',
'uploadMultiPart-本地文件分块上传',
'listParts-查询已上传块',
'abortMultipartUpload-取消已上传块',
'listMultipartUploads-查询正在进行的分块上传',
'getObjectPartUploads-查询object下的正在上传的分块',
'modifyStorageClass',
'putObjectAcl',
'getObjectAcl',
'uploadFile'
];
var container = document.querySelector('.main');
var html = '';
buttons.forEach(function(name){
html+=`<button data-method='${name.match(/[a-zA-Z]+/g)[0]}'>${name}</button>`;
})
container.innerHTML = html;
container.onclick = function (e) {
if (e.target.tagName === 'BUTTON') {
var name = e.target.getAttribute('data-method').trim();
window[name]();
}
};
}