dart 如何使用Flutter(DIO)将图像文件上传到API?

vkc1a9a2  于 2023-05-04  发布在  Flutter
关注(0)|答案(1)|浏览(141)

我已经成功地上传了一个图像文件到一个API使用 Postman ,我能够附加文件,并将其发送到API。但是当我在Flutter上尝试它时,它得到了一个错误代码406不可接受。我不知道为什么会发生这种情况。
这是Flutter代码
表单数据

FormData body = FormData.fromMap({
      "tenant_id": event.tenantID,
      "tenant_name": event.name,
      "phone_number": event.phone,
      "tenant_rent": event.rentPrice,
      "tenant_birthdate": event.birthDate,
      // "tenant_doc": event.image,
      "tenant_image": await MultipartFile.fromFile(event.image.path,
          filename: event.image.name),
      // "tenant_country": event.tenantCountry,
      "date": event.startingDate,
      "property_id": event.propertyID,
      "tenant_email": event.email,
      "tenant_bank_acc_no": event.bankaccNo,
    });

这是电台

static PostFormData({String? url, FormData? body}) async {
print("Start PostForm Data");
var response = await Dio().post(url!,
    data: body!,
    options: Options(headers: {
      "Content-Type": "multipart/form-data",
      'Accept': '*/*',
    }));
print("End PostFormData");

return response.data;

}
我已经打印了image.path和image.name,看起来是正确的,但我不确定为什么它在API中不被接受
再次,我已经尝试上传和附加在 Postman ,它能够正确上传,并接受正确的类型,但由于某种原因,当我试图上传一个图像扑使用上述代码,它不会工作,我得到的错误代码406不接受ex 1c 0d1x
但我不知道为什么它是不正确上传,不接受在Flutter/移动的.

llycmphe

llycmphe1#

你可以在下面看到使用dio上传照片的参考

Future<UploadModel> upload({required File foto}) async {
    try {
      var formData = FormData.fromMap({
        'foto': await MultipartFile.fromFile(foto.path),
      });

      var response = await Dio().postUri(
        Uri(
          scheme: "https",
          host: "localhost",
          port: 8995,
          path: "/merchant/upload_file",
        ),
        data: formData,
      );

      if (response.statusCode == 200) {
        return UploadModel.fromJson(response.data);
      } else {
        return UploadModel(rcDesc: "kesalahan server / mobile", rc: "500");
      }
    } on DioError {
      return UploadModel(rcDesc: "TimeOut", rc: "408");
    }
  }

相关问题