upLoadFile<T> method

Future<T> upLoadFile<T>(
  1. String url,
  2. FormData formData, {
  3. dynamic onSendProgressCB(
    1. int send,
    2. int total
    )?,
  4. Options? options,
  5. Map<String, dynamic>? queryParameters,
})

上传文件 formData post上传 url 访问地址 fromFile see FormData FormData.fromMap({'file': await MultipartFile.fromFile('filePath./text2.txt', filename: 'text2.txt')} FormData.fromMap({'files': await MultipartFile.fromFile('filePath./text2.txt', filename: 'text2.txt')} onSendProgressCB 上传进度条回调 options dio请求设置可以设置请求头header等'Content-Type': 'multipart/form-data;BaseOptions queryParameters 请求参数,可以作用于带参数上传 e.g await MultipartFile.fromFile(File(filePath), "file"),

Implementation

Future<T> upLoadFile<T>(String url, FormData formData,
    {Function(int send, int total)? onSendProgressCB,
    Options? options,
    Map<String, dynamic>? queryParameters}) async {
  var cancelToken = CancelToken();
  try {
    Response<String> response = await _dio.post(url,
        data: formData,
        onSendProgress: onSendProgressCB,
        options: options,
        cancelToken: cancelToken,
        queryParameters: queryParameters);
    if (response.statusCode == RxDioConstants.networkStatus) {
      Map<String, dynamic> data = json.decode(response.toString());
      //对象数据类型
      BaseBean bean = BaseBean<T>.fromJson(data);
      if (bean.isSuccess()) {
        /// 返回泛型Bean
        return await bean.data as T;
      } else {
        return await Future.error(bean.message);
      }
    }
  } on Exception catch (e) {
    return Future.error(e);
  } finally {
    cancelToken.cancel();
  }
  return Future.error(e);
}