无法发送包含文档列表的多部分请求问题咨询
无法发送包含文档列表的多部分请求问题咨询
各位大佬好,我最近在Flutter项目里遇到个多部分请求的坑,折腾半天没搞定,来求助下!
需求是给后端发送一个包含文档列表的FormData请求,用来更新签证预约的相关文档,同时还要带上签证ID和要删除的文档ID列表。我写了一段代码,但现在的问题是后端始终接收不到NewDocuments这个文件列表,要么说字段不存在,要么说格式不对。
我先把当前的代码贴出来,麻烦帮忙看看哪里有问题:
@override Future<SuccessResponse> changeDocument( int visaAppointmentId, List<NewDocumentsRequest> newDocuments, List<int> deletedDocuments, ) async { try { FormData data = FormData(); data.fields .add(MapEntry('VisaAppointmentId', visaAppointmentId.toString())); for (var element in deletedDocuments) { data.fields.add(MapEntry('DeletedDocuments', element.toString())); } for (var documentRequest in newDocuments) { String fileName = documentRequest.document!.path.split('/').last; List<int> bytes = await documentRequest.document!.readAsBytes(); var contentType = lookupMimeType(documentRequest.document!.path); var parts = contentType!.split('/'); var type = parts[0]; var subtype = parts[1]; var mediaType = MediaType(type, subtype); MultipartFile multipartFile = MultipartFile.fromBytes( bytes, filename: fileName, contentType: mediaType, ); // 这里我尝试把每个文件加入FormData,但不确定数组类型的文件字段是不是这么加的 data.files.add(MapEntry('NewDocuments', multipartFile)); } final response = await _dio.post( '/VisaAppointment/ChangeDocument', data: data, options: Options(headers: await _getHeaders()), ); return SuccessResponse.fromJson(response.data); } catch (e) { rethrow; } }
我已经排查过的点:
- 文件的字节读取是正常的,能正确获取到文件内容
- MIME类型解析也没问题,图片、PDF这些都能得到正确的mediaType
- 后端接口约定的接收字段就是
NewDocuments,是一个文件数组类型
有没有大佬能帮我看看,是不是FormData中数组类型的文件字段构造方式不对?或者还有其他我没注意到的细节?
备注:内容来源于stack exchange,提问作者Bear
相关产品推荐
相关产品推荐

