前端js华为云obs断点续传上传
断点续传上传就是将待上传的文件分成若干份分别上传,并实时地将每段上传结果统一记录在断点续传记录对象中,仅当所有分段都上传成功时返回上传成功的结果,否则在回调函数中返回错误码提醒用户通过传入断点续传记录对象再次调用接口进行重新上传。
// 创建ObsClient实例
var obsClient = new ObsClient({
access_key_id: '*** Provide your Access Key ***',
secret_access_key: '*** Provide your Secret Key ***',
server : 'https://your-endpoint'
});
var cp;
var hook;
obsClient.uploadFile({
Bucket : 'bucketname', // 桶名
Key : 'objectname', // 对象名
SourceFile : document.getElementById('file').files[0], // 待上传的文件
PartSize : 9 * 1024 * 1024, // 分段大小
ProgressCallback : function(transferredAmount, totalAmount, totalSeconds){
console.log(transferredAmount * 1.0 / totalSeconds / 1024);
console.log(transferredAmount * 100.0 / totalAmount);
if(hook && (transferredAmount / totalAmount) > 0.5){
// 暂停断点续传任务
hook.cancel();
}
},
EventCallback : function(eventType, eventParam, eventResult){
// 处理事件响应
},
ResumeCallback : function(resumeHook, uploadCheckpoint){
// 获取取消断点续传上传任务控制参数
hook = resumeHook;
// 记录断点
cp = uploadCheckpoint;
}
}, function(err, result){
console.error('Error-->' + err);
// 出现错误,再次调用断点续传接口,继续上传任务
if(err){
obsClient.uploadFile({
UploadCheckpoint : cp,
ProgressCallback : function(transferredAmount, totalAmount, totalSeconds){
console.log(transferredAmount * 1.0 / totalSeconds / 1024);
console.log(transferredAmount * 100.0 / totalAmount);
},
EventCallback : function(eventType, eventParam, eventResult){
// 处理事件响应
},
}, function(err, result){
if(err){
console.error('Error-->' + err);
}else{
if(result.CommonMsg.Status < 300){
console.log('RequestId-->' + result.InterfaceResult.RequestId);
console.log('Bucket-->' + result.InterfaceResult.Bucket);
console.log('Key-->' + result.InterfaceResult.Key);
console.log('Location-->' + result.InterfaceResult.Location);
}else{
console.log('Code-->' + result.CommonMsg.Code);
console.log('Message-->' + result.CommonMsg.Message);
}
}
});
}else {
console.log('Status-->' + result.CommonMsg.Status);
if (result.CommonMsg.Status < 300 && result.InterfaceResult) {
console.log('RequestId-->' + result.InterfaceResult.RequestId);
}
}
});