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

我已经使用邮递员成功将图像文件上传到 API,我能够附加文件并将其发送到 API。 但是当我在 Flutter 上尝试它时,它得到了一个错误代码 406 NOT ACCEPTABLE。 我不确定为什么会这样。

表单数据

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,
    });

这是 dio 的帖子

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 上上传和附加,它能够正确上传并接受正确的类型,但是由于某种原因,当我尝试使用上面的代码在 flutter 上上传图像时,它不会工作,我得到错误代码 406 不能接受的

但我不确定为什么它没有正确上传并且在 flutter / mobile 中不被接受。

回答
S
Santiago Hodkiewicz
3周前

尝试给你的请求一个类型

"tenant_image": await MultipartFile.fromFile(event.image.path,
  filename: event.image.name,
  contentType: new MediaType("image", "jpeg"), **//add this**
),