upLoadFile<T> method
上传文件 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);
}