code: function uploadSliceItem(params, callback) {
      var self = this;
      var TaskId = params.TaskId;
      var Bucket = params.Bucket;
      var Region = params.Region;
      var Key = params.Key;
      var FileSize = params.FileSize;
      var FilePath = params.FilePath;
      var PartNumber = params.PartNumber * 1;
      var SliceSize = params.SliceSize;
      var ServerSideEncryption = params.ServerSideEncryption;
      var UploadData = params.UploadData;
      var ChunkRetryTimes = self.options.ChunkRetryTimes + 1;
  
      var start = SliceSize * (PartNumber - 1);
  
      var ContentLength = SliceSize;
  
      var end = start + SliceSize;
  
      if (end > FileSize) {
          end = FileSize;
          ContentLength = end - start;
      }
  
      util.fileSlice(FilePath, start, end, function (md5Body) {
          util.getFileMd5(md5Body, function (err, md5) {
              var contentMd5 = md5 ? util.binaryBase64(md5) : '';
              var PartItem = UploadData.PartList[PartNumber - 1];
              Async.retry(ChunkRetryTimes, function (tryCallback) {
                  if (!self._isRunningTask(TaskId)) return;
                  util.fileSlice(FilePath, start, end, function (Body) {
                      self.multipartUpload({
                          TaskId: TaskId,
                          Bucket: Bucket,
                          Region: Region,
                          Key: Key,
                          ContentLength: ContentLength,
                          PartNumber: PartNumber,
                          UploadId: UploadData.UploadId,
                          ServerSideEncryption: ServerSideEncryption,
                          Body: Body,
                          onProgress: params.onProgress,
                          ContentMD5: contentMd5,
                      }, function (err, data) {
                          if (!self._isRunningTask(TaskId)) return;
                          if (err) {
                              return tryCallback(err);
                          } else {
                              PartItem.Uploaded = true;
                              return tryCallback(null, data);
                          }
                      });
                  });
              }, function (err, data) {
                  if (!self._isRunningTask(TaskId)) return;
                  return callback(err, data);
              });
          });
      });
  }
docs: 上传指定分片