Skip to content

Commit b36de15

Browse files
authored
Merge pull request #48 from livehigh/feat/add-uploadFile
feat:新增高级上传uploadFile接口
2 parents 9263e5f + f7f8949 commit b36de15

File tree

6 files changed

+194
-4
lines changed

6 files changed

+194
-4
lines changed

demo-album/lib/cos-wx-sdk-v5.js

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2338,7 +2338,7 @@ base.init(COS, task);
23382338
advance.init(COS, task);
23392339

23402340
COS.getAuthorization = util.getAuth;
2341-
COS.version = '1.0.8';
2341+
COS.version = '1.0.9';
23422342

23432343
module.exports = COS;
23442344

@@ -9884,6 +9884,48 @@ function abortUploadTaskArray(params, callback) {
98849884
});
98859885
}
98869886

9887+
// 高级上传
9888+
function uploadFile(params, callback) {
9889+
var self = this;
9890+
9891+
// 判断多大的文件使用分片上传
9892+
var SliceSize = params.SliceSize === undefined ? self.options.SliceSize : params.SliceSize;
9893+
9894+
var taskList = [];
9895+
9896+
var FileSize = params.FileSize;
9897+
var fileInfo = {TaskId: ''};
9898+
9899+
// 整理 option,用于返回给回调
9900+
util.each(params, function (v, k) {
9901+
if (typeof v !== 'object' && typeof v !== 'function') {
9902+
fileInfo[k] = v;
9903+
}
9904+
});
9905+
9906+
// 处理文件 TaskReady
9907+
var _onTaskReady = params.onTaskReady;
9908+
params.onTaskReady = function (tid) {
9909+
fileInfo.TaskId = tid;
9910+
_onTaskReady && _onTaskReady(tid);
9911+
};
9912+
9913+
// 处理文件完成
9914+
var _onFileFinish = params.onFileFinish;
9915+
var onFileFinish = function (err, data) {
9916+
_onFileFinish && _onFileFinish(err, data, fileInfo);
9917+
callback && callback(err, data);
9918+
};
9919+
9920+
// 添加上传任务
9921+
var api = FileSize > SliceSize ? 'sliceUploadFile' : 'postObject';
9922+
taskList.push({
9923+
api: api,
9924+
params: params,
9925+
callback: onFileFinish,
9926+
});
9927+
self._addTasks(taskList);
9928+
}
98879929

98889930
// 批量上传文件
98899931
function uploadFiles(params, callback) {
@@ -10217,6 +10259,7 @@ function copySliceItem(params, callback) {
1021710259
var API_MAP = {
1021810260
sliceUploadFile: sliceUploadFile,
1021910261
abortUploadTask: abortUploadTask,
10262+
uploadFile: uploadFile,
1022010263
uploadFiles: uploadFiles,
1022110264
sliceCopyFile: sliceCopyFile,
1022210265
};

demo/demo-sdk.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,67 @@ var dao = {
151151
console.log(err || data)
152152
});
153153
},
154+
'uploadFile 高级上传': function() {
155+
var uploadFile = function(file) {
156+
cos.uploadFile({
157+
Bucket: config.Bucket,
158+
Region: config.Region,
159+
Key: file.name,
160+
FilePath: file.path,
161+
SliceSize: 1024 * 1024 * 5, // 文件大于5mb自动使用分块上传
162+
onProgress: function (info) {
163+
var percent = parseInt(info.percent * 10000) / 100;
164+
var speed = parseInt(info.speed / 1024 / 1024 * 100) / 100;
165+
console.log('进度:' + percent + '%; 速度:' + speed + 'Mb/s;');
166+
},
167+
onFileFinish: function (err, data, options) {
168+
console.log(options.Key + '上传' + (err ? '失败' : '完成'));
169+
},
170+
}, function (err, data) {
171+
console.log(err || data);
172+
});
173+
}
174+
wx.chooseMessageFile({
175+
count: 10,
176+
type: 'all',
177+
success: function(res) {
178+
uploadFile(res.tempFiles[0]);
179+
}
180+
});
181+
},
182+
'uploadFiles 批量上传': function() {
183+
var uploadFiles = function(files) {
184+
const fileList = files.map(function(file) {
185+
return Object.assign(file, {
186+
Bucket: config.Bucket,
187+
Region: config.Region,
188+
Key: file.name,
189+
FilePath: file.path,
190+
});
191+
});
192+
cos.uploadFiles({
193+
files: fileList,
194+
SliceSize: 1024 * 1024 * 5, // 文件大于5mb自动使用分块上传
195+
onProgress: function (info) {
196+
var percent = parseInt(info.percent * 10000) / 100;
197+
var speed = parseInt(info.speed / 1024 / 1024 * 100) / 100;
198+
console.log('进度:' + percent + '%; 速度:' + speed + 'Mb/s;');
199+
},
200+
onFileFinish: function (err, data, options) {
201+
console.log(options.Key + '上传' + (err ? '失败' : '完成'));
202+
},
203+
}, function (err, data) {
204+
console.log(err || data);
205+
});
206+
}
207+
wx.chooseMessageFile({
208+
count: 10,
209+
type: 'all',
210+
success: function(res) {
211+
uploadFiles(res.tempFiles);
212+
}
213+
});
214+
},
154215
'分片上传': function() {
155216
var sliceUploadFile = function (file) {
156217
var key = file.name;

demo/lib/cos-wx-sdk-v5.js

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2338,7 +2338,7 @@ base.init(COS, task);
23382338
advance.init(COS, task);
23392339

23402340
COS.getAuthorization = util.getAuth;
2341-
COS.version = '1.0.8';
2341+
COS.version = '1.0.9';
23422342

23432343
module.exports = COS;
23442344

@@ -9884,6 +9884,48 @@ function abortUploadTaskArray(params, callback) {
98849884
});
98859885
}
98869886

9887+
// 高级上传
9888+
function uploadFile(params, callback) {
9889+
var self = this;
9890+
9891+
// 判断多大的文件使用分片上传
9892+
var SliceSize = params.SliceSize === undefined ? self.options.SliceSize : params.SliceSize;
9893+
9894+
var taskList = [];
9895+
9896+
var FileSize = params.FileSize;
9897+
var fileInfo = {TaskId: ''};
9898+
9899+
// 整理 option,用于返回给回调
9900+
util.each(params, function (v, k) {
9901+
if (typeof v !== 'object' && typeof v !== 'function') {
9902+
fileInfo[k] = v;
9903+
}
9904+
});
9905+
9906+
// 处理文件 TaskReady
9907+
var _onTaskReady = params.onTaskReady;
9908+
params.onTaskReady = function (tid) {
9909+
fileInfo.TaskId = tid;
9910+
_onTaskReady && _onTaskReady(tid);
9911+
};
9912+
9913+
// 处理文件完成
9914+
var _onFileFinish = params.onFileFinish;
9915+
var onFileFinish = function (err, data) {
9916+
_onFileFinish && _onFileFinish(err, data, fileInfo);
9917+
callback && callback(err, data);
9918+
};
9919+
9920+
// 添加上传任务
9921+
var api = FileSize > SliceSize ? 'sliceUploadFile' : 'postObject';
9922+
taskList.push({
9923+
api: api,
9924+
params: params,
9925+
callback: onFileFinish,
9926+
});
9927+
self._addTasks(taskList);
9928+
}
98879929

98889930
// 批量上传文件
98899931
function uploadFiles(params, callback) {
@@ -10217,6 +10259,7 @@ function copySliceItem(params, callback) {
1021710259
var API_MAP = {
1021810260
sliceUploadFile: sliceUploadFile,
1021910261
abortUploadTask: abortUploadTask,
10262+
uploadFile: uploadFile,
1022010263
uploadFiles: uploadFiles,
1022110264
sliceCopyFile: sliceCopyFile,
1022210265
};

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cos-wx-sdk-v5",
3-
"version": "1.0.8",
3+
"version": "1.0.9",
44
"description": "小程序 SDK for [腾讯云对象存储服务](https://cloud.tencent.com/product/cos)",
55
"main": "demo/lib/cos-wx-sdk-v5.js",
66
"scripts": {

src/advance.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -802,6 +802,48 @@ function abortUploadTaskArray(params, callback) {
802802
});
803803
}
804804

805+
// 高级上传
806+
function uploadFile(params, callback) {
807+
var self = this;
808+
809+
// 判断多大的文件使用分片上传
810+
var SliceSize = params.SliceSize === undefined ? self.options.SliceSize : params.SliceSize;
811+
812+
var taskList = [];
813+
814+
var FileSize = params.FileSize;
815+
var fileInfo = {TaskId: ''};
816+
817+
// 整理 option,用于返回给回调
818+
util.each(params, function (v, k) {
819+
if (typeof v !== 'object' && typeof v !== 'function') {
820+
fileInfo[k] = v;
821+
}
822+
});
823+
824+
// 处理文件 TaskReady
825+
var _onTaskReady = params.onTaskReady;
826+
params.onTaskReady = function (tid) {
827+
fileInfo.TaskId = tid;
828+
_onTaskReady && _onTaskReady(tid);
829+
};
830+
831+
// 处理文件完成
832+
var _onFileFinish = params.onFileFinish;
833+
var onFileFinish = function (err, data) {
834+
_onFileFinish && _onFileFinish(err, data, fileInfo);
835+
callback && callback(err, data);
836+
};
837+
838+
// 添加上传任务
839+
var api = FileSize > SliceSize ? 'sliceUploadFile' : 'postObject';
840+
taskList.push({
841+
api: api,
842+
params: params,
843+
callback: onFileFinish,
844+
});
845+
self._addTasks(taskList);
846+
}
805847

806848
// 批量上传文件
807849
function uploadFiles(params, callback) {
@@ -1135,6 +1177,7 @@ function copySliceItem(params, callback) {
11351177
var API_MAP = {
11361178
sliceUploadFile: sliceUploadFile,
11371179
abortUploadTask: abortUploadTask,
1180+
uploadFile: uploadFile,
11381181
uploadFiles: uploadFiles,
11391182
sliceCopyFile: sliceCopyFile,
11401183
};

src/cos.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,6 @@ base.init(COS, task);
5757
advance.init(COS, task);
5858

5959
COS.getAuthorization = util.getAuth;
60-
COS.version = '1.0.8';
60+
COS.version = '1.0.9';
6161

6262
module.exports = COS;

0 commit comments

Comments
 (0)