Dio-Flutter Image Upload返回套接字异常

时间:2019-03-19 10:50:17

标签: sockets file-upload flutter multipartform-data

我尝试使用Dio插件支持的formData上传图像。

FormData formData = new FormData.from(
        {"profile_image": UploadFileInfo(image, "profile_image.jpg")});
    var response = await _dio.post(ApiConfiguration.getUploadImageUrl().toString(),data: formData);

但是它返回错误。

DioError [DioErrorType.DEFAULT]: SocketException: OS Error: Connection reset by peer, errno = 54, address = 3.122.199.93, port = 62181

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

UploadFileInfo和FormData.from在v3中已弃用。文档需要更清晰和更新。我为此浪费了很多时间。

我使用dio通过这种方式发布带有其他信息的文件路径:

 Dio dio = new Dio();
  FormData formData = new FormData();
  formData.add(
    "apiKey",
    "my_api_key",
  );
  formData.add(
    "file",
    "image_path",
  );
  Response response = await dio.post(
    "https://localhost",
    data: formData,
    onSendProgress: (int sent, int total) {
      // do something
    },
  ).catchError((onError) {
    throw Exception('something');
  });

答案 1 :(得分:0)

在应用的发布版本中遇到类似的问题,Dio 无法上传图片。这可能是由于两个原因,一个是上面提到的,您在 v3 中使用了不推荐使用的方法,或者您可以尝试将此权限添加到 Manifest

添加此权限

<uses-permission android:name="android.permission.INTERNET" />

到您的应用级别清单。

android/app/src/main/AndroidManifest.xml

可以在此处找到解决方案

https://stackoverflow.com/a/59392036/14641365

虽然将图像上传到我使用的服务器的其他工作如下

String url = "YOUR_URL_TO_UPLOAD";
FormData formData = FormData.fromMap({
"QUERY_PARAM_NAME": await MultipartFile.fromFile("IMAGE_PATH", filename:"TESTING.jpg"),
});
var response = await dio.post(url, data: formData);