如何使用api post方法发送文件?

时间:2019-10-28 08:35:05

标签: flutter dart

这是我的post方法,我可以发送任何文本格式的文件,但是我需要发送文件。

如果可以,仅修改我的代码。这很容易引起捕获问题,谢谢

getComp() async {


final Map<String, dynamic> jsondata = {
  'employee_id':
      '${ScopedModel.of<AppModel>(context, rebuildOnChange: true).employee_id}',
  'receiver_id': '${recid.text}',
  'subject': '${subject.text}',
  'message_body': '${msgbody.text}',
  'message_attachment':'${filePath}'
};
var jsonresponse = null;
var response = await http.post(
    'example.com/compose',
    headers: {
      "Accept": "application/json"
    },
    body: jsondata,

);

if (response.statusCode == 200) {
  jsonresponse = json.decode(response.body);
  print(jsonresponse);

}else{
  print('problem');
}
}

这是我的文件路径选择器

getfile(){

      filePath =  FilePicker.getFilePath(type: FileType.ANY);


}

如果可以,请修改此代码。

2 个答案:

答案 0 :(得分:0)

首先将其转换为base64并将其插入数据库。当我们开发一个将文件传递到数据库的应用程序时,就是这样做的。

答案 1 :(得分:0)

我用dio解决了我的问题:( 如果有人面对,请使用dio

 uploadFile() async {
FormData formData = new FormData.fromMap({
  'employee_id':
  '546546',
  'receiver_id': '${recid.text}',
  'subject': '${subject.text}',
  'message_body': '${msgbody.text}',
  'message_attachment': filePath ==null? 'nothing': await 
 MultipartFile.fromFile("${filePath}",filename: "$filePath}"),
});


 Response response = await Dio().post("example.com", data: formData);
 print(response);
}