You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用http发送XFile图片至.NET后端时出现400错误

问题解决步骤
  • 修正表单字段名:后端接收文件的参数名是imageFormFile,但你的Flutter代码里用的是'file',字段名不匹配是导致请求被拒绝的核心原因,必须改成一致的名称。
  • 移除手动添加的Content-Type头:http.MultipartRequest会自动生成包含boundary的multipart/form-data请求头,手动添加该头会破坏请求格式,引发错误。
  • 指定文件的Content-Type:像Swagger生成的curl命令那样,给MultipartFile添加image/jpeg类型标识,确保后端能正确识别文件类型。

修改后的Flutter代码:

var uri = Uri.parse('$url/upload/$id');
var request = http.MultipartRequest('POST', uri);

// 仅保留accept头,移除手动设置的Content-Type
request.headers.addAll({'accept': '*/*'});

var x = await file.readAsBytes();
// 字段名改为imageFormFile,添加contentType,可选带上文件名
var mFile = http.MultipartFile.fromBytes(
  'imageFormFile', 
  x,
  contentType: MediaType('image', 'jpeg'),
  filename: file.name
);
request.files.add(mFile);

var response = await request.send();

额外说明

如果XFile对象包含文件名(file.name),加上filename参数能让请求格式和Swagger生成的curl完全一致,后端处理会更顺畅。同时要确认$url的拼接是否和curl中的http://localhost:44383/apiname完全匹配,避免路径错误导致400。

内容的提问来源于stack exchange,提问作者MartinYakuza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:25:30