Skip to content

Commit 18977cf

Browse files
authored
fix: 修复 downloadFile 取消任务不能取消指定任务 (#202)
1 parent 5f8158e commit 18977cf

File tree

3 files changed

+45
-6
lines changed

3 files changed

+45
-6
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cos-nodejs-sdk-v5",
3-
"version": "2.13.4",
3+
"version": "2.13.5",
44
"description": "cos nodejs sdk v5",
55
"main": "index.js",
66
"types": "index.d.ts",

sdk/advance.js

+8-5
Original file line numberDiff line numberDiff line change
@@ -1506,7 +1506,7 @@ function downloadFile(params, callback) {
15061506
});
15071507

15081508
// 计算合适的分片大小
1509-
ep.on('calc_suitable_chunk_size', function (SourceHeaders) {
1509+
ep.on('calc_suitable_chunk_size', function () {
15101510
// 控制分片大小
15111511
var SIZE = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 1024 * 2, 1024 * 4, 1024 * 5];
15121512
var AutoChunkSize = 1024 * 1024;
@@ -1535,7 +1535,7 @@ function downloadFile(params, callback) {
15351535
});
15361536

15371537
// 准备要下载的空文件
1538-
ep.on('prepare_file', function (SourceHeaders) {
1538+
ep.on('prepare_file', function () {
15391539
fs.writeFile(FilePath, '', (err) => {
15401540
if (err) {
15411541
ep.emit('error', err.code === 'EISDIR' ? { code: 'exist_same_dir', message: FilePath } : err);
@@ -1547,7 +1547,7 @@ function downloadFile(params, callback) {
15471547

15481548
// 计算合适的分片大小
15491549
var result;
1550-
ep.on('start_download_chunks', function (SourceHeaders) {
1550+
ep.on('start_download_chunks', function () {
15511551
onProgress({ loaded: 0, total: FileSize }, true);
15521552
var maxPartNumber = PartList.length;
15531553
Async.eachLimit(
@@ -1649,8 +1649,11 @@ function downloadFile(params, callback) {
16491649
});
16501650

16511651
// 监听 取消任务
1652-
var killTask = function () {
1653-
aborted = true;
1652+
var killTask = function (info) {
1653+
var killingTaskId = info.TaskId || '';
1654+
if (killingTaskId === TaskId) {
1655+
aborted = true;
1656+
}
16541657
};
16551658
TaskId && self.on('inner-kill-task', killTask);
16561659

test/test.js

+36
Original file line numberDiff line numberDiff line change
@@ -6079,6 +6079,42 @@ group('downloadFile', function () {
60796079
}
60806080
);
60816081
});
6082+
test('downloadFile() 下载文件时取消下载', function (done, assert) {
6083+
var Key = '10mb.zip';
6084+
var fileSize = 1024 * 1024 * 10;
6085+
var filePath = createFileSync(path.resolve(__dirname, Key), fileSize);
6086+
cos.sliceUploadFile(
6087+
{
6088+
Bucket: config.Bucket,
6089+
Region: config.Region,
6090+
Key: Key,
6091+
FilePath: filePath,
6092+
},
6093+
function (err, data) {
6094+
if (err) {
6095+
done();
6096+
} else {
6097+
cos.downloadFile({
6098+
Bucket: config.Bucket, // Bucket 格式:test-1250000000
6099+
Region: config.Region,
6100+
Key: Key,
6101+
FilePath: './' + Key, // 本地保存路径
6102+
ChunkSize: 1024 * 1024 * 8, // 分块大小
6103+
ParallelLimit: 5, // 分块并发数
6104+
RetryTimes: 3, // 分块失败重试次数
6105+
TaskId: 'downloadFile-123', // 可以自己生成TaskId,用于取消下载
6106+
onProgress: function (progressData) {
6107+
if (progressData.percent >= 0.1) {
6108+
cos.emit('inner-kill-task', {TaskId: 'downloadFile-123'});
6109+
assert.ok(err);
6110+
done();
6111+
}
6112+
},
6113+
});
6114+
}
6115+
}
6116+
);
6117+
});
60826118
});
60836119

60846120
// group('数据万象', function () {

0 commit comments

Comments
 (0)