Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Dart中发送大量POST数据_Dart_Flutter - Fatal编程技术网

如何在Dart中发送大量POST数据

如何在Dart中发送大量POST数据,dart,flutter,Dart,Flutter,我正在这样做: startUpload(File file) async { var bytes = await file.readAsBytes(); var base64Img = base64.encode(bytes); debugPrint(base64Img); var apiUrl = "MY_URL"; var requestBody = new Map<String, String>(); requestBody[

我正在这样做:

 startUpload(File file) async {
    var bytes = await file.readAsBytes();
    var base64Img = base64.encode(bytes);
    debugPrint(base64Img);

    var apiUrl = "MY_URL";
    var requestBody = new Map<String, String>();
    requestBody["requestType"] = "upload";
    requestBody["job_id"] = jobId.toString();
    requestBody["picture"] = base64Img;
    http.Response response = await http.post(apiUrl, body: requestBody);
  }
startUpload(文件)异步{
var bytes=wait file.readAsBytes();
var base64Img=base64.encode(字节);
debugPrint(base64Img);
var apiUrl=“我的URL”;
var requestBody=newmap();
requestBody[“requestType”]=“upload”;
requestBody[“job_id”]=jobId.toString();
requestBody[“picture”]=base64Img;
http.Response-Response=wait-http.post(apirl,body:requestBody);
}
我注意到后端接收的
base64Img
的长度比应用程序中生成的长度要小。当我调用
base64Img.length
时,我得到129648,但在服务器上,我得到66401。请注意,该文件实际上是一个图像。因此,当我从服务器解码图像时,图像的下半部分不显示或以某种方式扭曲

我也用原生Android发送同样的数据,没有任何问题


所以我的问题是,dart对请求正文数据的值是否有最大长度限制,以及如何发送大数据?

要通过网络发送大文件,我必须使用
http
包中的
MultipartRequest
,与
MultipartFile
和它的构造函数-
MultipartFile.fromBytes一起使用

var url = Uri.parse("YOUR_URL");
var request = new http.MultipartRequest("POST", url);
request.fields['some_additional_field'] = 'other_field';
request.files.add(new http.MultipartFile.fromBytes("file", bytes, filename: 
file.name);
request.send().then((response) {
  if (response.statusCode == 200) print("Uploaded!");
});
或者,您可以使用FormData只发送一个使用FormData的文件——例如,使用dart:html中的HttpRequest

void sendRequest(File file) {
  FormData data = new FormData();
  data.append('field', 'some_string');
  data.appendBlob('file', file);
  HttpRequest.request('YOUR_URL', method: "POST", sendData: data).then((req) 
  {
    print(req.responseText);
  });
}

谢谢你的回答。请注意,图像需要作为base64编码字符串发送。请问我有没有办法用第一种解决方案做到这一点?对于第二种解决方案,我发现很难导入
FormData