Django rest framework ios上具有大图像的颤振SocketException问题

Django rest framework ios上具有大图像的颤振SocketException问题,django-rest-framework,flutter,flutter-dependencies,Django Rest Framework,Flutter,Flutter Dependencies,我有一个将图像发布到django rest api的方法。 它适用于小尺寸图像。但当它达到900 KB或更大(如ios图像)时,会花费一些时间,并导致此错误(而且此问题仅在我使用ios设备时出现。android没有问题): SocketException:OS错误:对等方重置连接,错误号=54, 地址=192.168.1.1,端口=52842 代码如下: postImage( BuildContext context, String name, String description, v

我有一个将图像发布到django rest api的方法。 它适用于小尺寸图像。但当它达到900 KB或更大(如ios图像)时,会花费一些时间,并导致此错误(而且此问题仅在我使用ios设备时出现。android没有问题):

SocketException:OS错误:对等方重置连接,错误号=54, 地址=192.168.1.1,端口=52842

代码如下:

postImage(
    BuildContext context, String name, String description, var image) async {
  SharedPreferences preferences = await SharedPreferences.getInstance();
  final url = "http://192.168.1.1/posts/";
  final uri = Uri.parse(url);
  final subject = BehaviorSubject<Map<String, dynamic>>();
  Map<String, dynamic> responseDetail;
  var response;

  var request = http.MultipartRequest('POST', uri);
  request.headers[HttpHeaders.authorizationHeader] =
      'Token ${preferences.getString('Key')}';
  request.headers[HttpHeaders.acceptHeader] = 'application/json';
  request.fields['name'] = name;
  request.fields['description'] = description;
  if (image != null) {
    var length = await image.length();
    var stream = http.ByteStream(DelegatingStream.typed(image.openRead()));
    request.files.add(http.MultipartFile('image', stream, length,
        filename: basename(image.path),));
  } else {
    request.fields['image'] = '';
  }
  try {
    response = await request.send();
    if (response.statusCode != 201) {
      response.stream.transform(utf8.decoder).listen((value) {
    responseDetail = json.decode(value);
  }, onDone: () {
    subject.add(responseDetail);
    subject.close();
  });
  return subject.share();
}
return response.statusCode;
  } catch (e) {
print(e);
}
}
后期图像(
BuildContext上下文、字符串名称、字符串描述、var图像)异步{
SharedReferences首选项=等待SharedReferences.getInstance();
最终url=”http://192.168.1.1/posts/";
最终uri=uri.parse(url);
最终主题=行为主题();
Map-responseDetail;
var反应;
var request=http.MultipartRequest('POST',uri);
request.headers[HttpHeaders.authorizationHeader]=
'Token${preferences.getString('Key')}';
request.headers[HttpHeaders.acceptHeader]='application/json';
request.fields['name']=name;
请求.字段['description']=说明;
如果(图像!=null){
var length=wait image.length();
var stream=http.ByteStream(DelegatingStream.typed(image.openRead());
request.files.add(http.MultipartFile('image',stream,length,
文件名:basename(image.path),);
}否则{
请求。字段['image']='';
}
试一试{
响应=等待请求。发送();
如果(response.statusCode!=201){
response.stream.transform(utf8.decoder).listen((值){
responseDetail=json.decode(值);
},onDone:(){
subject.add(responseDetail);
subject.close();
});
返回subject.share();
}
返回response.statusCode;
}捕获(e){
印刷品(e);
}
}

问题出在哪里?

这是因为nginx
客户端\u max\u body\u size

如果其他人有此问题,请转到
/etc/nginx/nginx.conf
路径并添加这一行
客户机\u max\u body\u size 20M
http
部分。最后,do
服务nginx重新加载

似乎是服务器端的问题。我建议您考虑一下API@MazinIbrahim我只是检查了一下,发现它在安卓设备上可以很好地处理大尺寸图像。就在ios端。