我尝试使用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
任何帮助将不胜感激。
答案 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);