【发布时间】:2018-08-13 23:28:02
【问题描述】:
我使用网络服务进行图像处理,它在 Postman 中运行良好:
现在我想用 Dart 发出 http 请求:
import 'package:http/http.dart' as http;
static ocr(File image) async {
var url = '${API_URL}ocr';
var bytes = image.readAsBytesSync();
var response = await http.post(
url,
headers:{ "Content-Type":"multipart/form-data" } ,
body: { "lang":"fas" , "image":bytes},
encoding: Encoding.getByName("utf-8")
);
return response.body;
}
但我不知道如何上传图像文件,在上面的代码中我得到异常:Bad state: Cannot set the body fields of a Request with content-type "multipart/form-data".
请求正文应该怎么写?
【问题讨论】:
-
解决方法:我要求我的服务器人员更改服务器 api 以接受 base64 编码图像。所以我把
base64编码的图像作为字符串放在正文中,标题的内容类型等于application/x-www-form-urlencoded,它可以工作。 -
这里回答了类似的问题stackoverflow.com/questions/44841729/…
-
@AravindVemula 我不想发送 base64 编码字节
-
您是否尝试过使用内容类型“application/octet-stream”。我总是尽可能避免“多部分/表单数据”。设计最好的文件上传 API 在 POST 正文中接受“application/octet-stream”,并且任何参数都在 URI 中。
标签: flutter dart file-upload httprequest