uploadMultipartShard method

Future<UploadMultipartResult> uploadMultipartShard({
  1. required String uploadId,
  2. required int splitIndex,
  3. required int splitNum,
  4. required Uint8List bytes,
  5. String filename = 'blob',
  6. CancelToken? cancelToken,
  7. void onSendProgress(
    1. int sent,
    2. int total
    )?,
})

上传单个分片

POST /api/v1/upload/multipart,字段:file / upload_id / split_index / split_num(1-based)。

Implementation

Future<UploadMultipartResult> uploadMultipartShard({
  required String uploadId,
  required int splitIndex,
  required int splitNum,
  required Uint8List bytes,
  String filename = 'blob',
  CancelToken? cancelToken,
  void Function(int sent, int total)? onSendProgress,
}) async {
  if (uploadId.isEmpty) {
    throw GoChatException('uploadId 不能为空');
  }
  if (splitIndex < 1 || splitNum < 1 || splitIndex > splitNum) {
    throw GoChatException('分片索引不合法: $splitIndex/$splitNum');
  }
  final form = FormData.fromMap({
    'upload_id': uploadId,
    'split_index': '$splitIndex',
    'split_num': '$splitNum',
    'file': MultipartFile.fromBytes(bytes, filename: filename),
  });
  final resp = await _net.http.postFormData(
    '/api/v1/upload/multipart',
    data: form,
    cancelToken: cancelToken,
    onSendProgress: onSendProgress,
  );
  return UploadMultipartResult.fromJson(resp);
}