Я не могу загружать изображения и формировать данные для остальных API, используя пакет DIO во флаттере - PullRequest
0 голосов
/ 02 октября 2019

Я не могу загрузить изображение в api rest in flutter. Я проверил api, он работает нормально.

Я не могу преобразовать файл (изображение) в загружаемую форму, может кто-нибудь помочьмне с этим? Я запустил flutter doctor -v все хорошо :) Вот код, который я использую для публикации данных формы:

Future<void> uploadAccountDetails(AccountDetailsModel details) async {
    var url = baseUrl + '/api/uploads/images';
    try {
      Dio dio = new Dio();
      FormData formData = new FormData.fromMap(
        {
          'city': details.cityName,
          'country': details.countryName,
          'residence_address': details.address,
          'dob': details.dob,
          'id_num': details.id,
          'passport_num': details.passportNo,
          'driving_license_nim': details.drivingLicNo,
          'user_id': 162,
          'postal_code': details.postalCode,
          'id_pic': await MultipartFile.fromFile(details.idPic.path,
              filename: basename(details.idPic.path)),
          'driving_license_pic':
              await MultipartFile.fromFile(details.drivingLicPic.path,
                  filename: basename(
                    details.drivingLicPic.path,
                  )), 
          'birth_certificate': await MultipartFile.fromFile(
            details.drivingLicPic.path,
            filename: basename(details.birthCertPic.path),
          ),
          'residence_permit_pic': await MultipartFile.fromFile(
            details.resPermitPic.path,
            filename: basename(details.resPermitPic.path),
          ),
          'profile_pic': await MultipartFile.fromFile(details.profilePic.path,
              filename: basename(details.profilePic.path)),
        },
      );
      print(formData);
      Response response = await dio.post(
        url,
        data: formData,
        onSendProgress: (received, total) {
          if (total != -1) {
            print((received / total * 100).toStringAsFixed(0) + "%");
          }
        },
      );
      print(response.statusCode);
      // print(response);

    } catch (e) {
      print(e);
      throw (e);
    }
  }

Журналы ошибок:

I / flutter (22523): DioError [DioErrorType.RESPONSE]: ошибка состояния Http [500] I / flutter (22523): DioError [DioErrorType.RESPONSE]: ошибка состояния Http [500]

Theошибка состояния:

I / flutter (22523): DioError [DioErrorType.RESPONSE]: ошибка статуса Http [500]

Я искал эту ошибку, но не нашел ни однойрешение, кто-нибудь может мне помочь с этим?

1 Ответ

0 голосов
/ 22 октября 2019

Я использовал 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');
});
...