in src/main/java/com/aliyun/oss/internal/OSSUploadOperation.java [531:585]
public PartResult call() throws Exception {
PartResult tr = null;
InputStream instream = null;
try {
UploadPart uploadPart = uploadCheckPoint.uploadParts.get(partIndex);
tr = new PartResult(partIndex + 1, uploadPart.offset, uploadPart.size);
instream = new FileInputStream(uploadCheckPoint.uploadFile);
instream.skip(uploadPart.offset);
UploadPartRequest uploadPartRequest = new UploadPartRequest();
uploadPartRequest.setBucketName(uploadFileRequest.getBucketName());
uploadPartRequest.setKey(uploadFileRequest.getKey());
uploadPartRequest.setUploadId(uploadCheckPoint.uploadID);
uploadPartRequest.setPartNumber(uploadPart.number);
uploadPartRequest.setInputStream(instream);
uploadPartRequest.setPartSize(uploadPart.size);
Payer payer = uploadFileRequest.getRequestPayer();
if (payer != null) {
uploadPartRequest.setRequestPayer(payer);
}
int limit = uploadFileRequest.getTrafficLimit();
if (limit > 0) {
uploadPartRequest.setTrafficLimit(limit);
}
UploadPartResult uploadPartResult = uploadPartWrap(uploadCheckPoint, uploadPartRequest);
if(multipartOperation.getInnerClient().getClientConfiguration().isCrcCheckEnabled()) {
OSSUtils.checkChecksum(uploadPartResult.getClientCRC(), uploadPartResult.getServerCRC(), uploadPartResult.getRequestId());
tr.setPartCRC(uploadPartResult.getClientCRC());
tr.setLength(uploadPartResult.getPartSize());
uploadPart.crc = uploadPartResult.getClientCRC();
}
PartETag partETag = new PartETag(uploadPartResult.getPartNumber(), uploadPartResult.getETag());
uploadCheckPoint.update(partIndex, partETag, true);
if (uploadFileRequest.isEnableCheckpoint()) {
uploadCheckPoint.dump(uploadFileRequest.getCheckpointFile());
}
ProgressPublisher.publishRequestBytesTransferred(progressListener, uploadPart.size);
} catch (Exception e) {
tr.setFailed(true);
tr.setException(e);
logException(String.format("Task %d:%s upload part %d failed: ", id, name, partIndex + 1), e);
} finally {
if (instream != null) {
instream.close();
}
}
return tr;
}