Skip to content

Commit 3ec5d02

Browse files
committed
修复进度跳动和多次上传 bug
1 parent 9a4cddf commit 3ec5d02

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

sdk/advance.js

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -169,26 +169,32 @@ function getUploadIdAndPartList(params, callback) {
169169
}
170170
};
171171
var getChunkETag = function (PartNumber, callback) {
172-
if (ETagMap[PartNumber]) {
173-
return ETagMap[PartNumber];
174-
}
175172
var start = SliceSize * (PartNumber - 1);
176173
var end = Math.min(start + SliceSize, FileSize);
177174
var ChunkSize = end - start;
178-
var ChunkReadStream = fs.createReadStream(params.FilePath, {start: start, end: end - 1});
179-
util.getFileMd5(ChunkReadStream, function (err, md5) {
180-
if (err) return callback(err);
181-
var ETag = '"' + md5 + '"';
182-
ETagMap[PartNumber] = ETag;
183-
FinishSliceCount += 1;
184-
FinishSize += ChunkSize;
185-
callback(err, {
175+
176+
if (ETagMap[PartNumber]) {
177+
callback(null, {
186178
PartNumber: PartNumber,
187-
ETag: ETag,
179+
ETag: ETagMap[PartNumber],
188180
Size: ChunkSize
189181
});
190-
onHashProgress();
191-
});
182+
} else {
183+
var ChunkReadStream = fs.createReadStream(params.FilePath, {start: start, end: end - 1});
184+
util.getFileMd5(ChunkReadStream, function (err, md5) {
185+
if (err) return callback(err);
186+
var ETag = '"' + md5 + '"';
187+
ETagMap[PartNumber] = ETag;
188+
FinishSliceCount += 1;
189+
FinishSize += ChunkSize;
190+
callback(err, {
191+
PartNumber: PartNumber,
192+
ETag: ETag,
193+
Size: ChunkSize
194+
});
195+
onHashProgress();
196+
});
197+
}
192198
};
193199

194200
// 通过和文件的 md5 对比,判断 UploadId 是否可用
@@ -497,12 +503,12 @@ function uploadSliceList(params, cb) {
497503
FinishSize += currentSize - preAddSize;
498504
SliceItem.ETag = data.ETag;
499505
}
500-
onFileProgress(true);
501506
asyncCallback(err || null, data);
502507
});
503508

504509
}, function (err, datas) {
505510
if (!self._isRunningTask(TaskId)) return;
511+
onFileProgress(true);
506512
if (err) {
507513
return cb(err);
508514
}

0 commit comments

Comments
 (0)