#flutter #dio
#flutter #dio
Вопрос:
Итак, я пытался обновить свой профиль пользователя, используя серверную платформу с именем ASP.NET ядро. Он отлично работает, когда я пытаюсь использовать API в postman, он работает на 100%, Он изменяет весь пользовательский профиль из электронной почты, изображения и т. Д. Но дело в том, что когда я пытаюсь использовать API в flutter, это не работает. Когда я пытаюсь его отладить, я обнаружил, что одна из моих переменных, которая находится в модели, не может перехватить многочастный файл из изображения, и это приводит к ошибке.
Что я пытался решить эту проблему (но все еще не работает):
- Я изменил разрешение
- Я изменил ширину и высоту изображения
ПОЧТАЛЬОН работает
https://i.stack.imgur.com/lj1af.png
UserProfileServices.dart
Future<Response> updateProfile(
File profilePic,
String email,
String password,
String fullName,
String phoneNumber,
DateTime dateOfBirth,
String gender,
String address,
String city,
String province,
String postalcode
)async{
final _path="/user/update-user";
try{
FormData formData= FormData.fromMap(({
"Image": await MultipartFile.fromFile(profilePic.path,
filename: profilePic.path.split("/").last),
"Email":email,
"Password":password,
"FullName":fullName,
"DateOfBirth":dateOfBirth,
"Gender":gender,
"Address":address,
"City":city,
"province":province,
"postalcode":postalcode,
}));
Response response = await httpClient.put(_path,data:formData);
return response;
}
catch(e)
{
print(e);
return e.response;
}
}
При отладке переменная profilepic успешно получала путь к изображению, но изображение не может его перехватить
Ответ №1:
Установите и импортируйте mime и dio и http (на всякий случай)
import 'package:dio/dio.dart';
import 'package:mime/mime.dart';
import 'package:http_parser/http_parser.dart';
Код
Future<Response> updateProfile(File profilePic,String email,String password,String fullName,String phoneNumber,DateTime dateOfBirth,String gender,String address,String city,String province,String postalcode)async{
final _path="/user/update-user";
try{
Dio dio = new Dio();
final mimeTypeData =lookupMimeType(profilePic.path, headerBytes: [0xFF, 0xD8]).split('/');
FormData formData= FormData.fromMap(({
"Image": await MultipartFile.fromFile(profilePic.path,contentType: MediaType(mimeTypeData[0], mimeTypeData[1]),
"Email":email,
"Password":password,
"FullName":fullName,
"DateOfBirth":dateOfBirth,
"Gender":gender,
"Address":address,
"City":city,
"province":province,
"postalcode":postalcode,
}));
var response = await dio.post("enter your full url for api here",data: formData);
return response;
}
catch(e)
{
print(e);
return e.response;
}
}
Примечание: Проверьте, чтобы FormData имел все значения
Если вы не хотите использовать Dio, вы можете использовать многочастный метод без dio, вы можете перейти по следующей ссылке
Ответ №2:
Мои плохие парни, в моей службе профилей отсутствует ключ, который является ключом «phonenumber», что приводит к ошибке