1

我想将数据发布到 postgres 服务器。我需要从注册表中发送信息以及一些图片。所以我需要使用 multipart/form-data。问题是我的注册表非常复杂,并且有几个嵌套对象(下面我将粘贴其中的一部分,以便您可以看到我在说什么)。

经过两天的研究并尝试了不同的选择,我无法让它发挥作用。无论是 http 还是 Dio 包,似乎在 Dio 包中 FormData.fromMap() 正在错误地格式化它......

有什么方法可以让它工作,或者我已经要求后端的人为两个不同的请求分开注册表单和图片并将其作为 json 发送......

这是我的表格的一部分:

FormData.fromMap({
      "questionnaire": {
        "horse": {"name": "Abisynia", "breed": "demo", "sex": "male"},
        "owner": {
          "personal_data": "John Doe",
          "email": "asasdasss@gmail.com",
          "phone_number": "3556234432"
        },
        "breakfast": {"name": "morning", "manufacturer": "Adasa", "amount": 1},
        "dinner": {"name": "noon", "manufacturer": "Aasd", "amount": 2},
        "supper": {"name": "evening", "manufacturer": "ASds", "amount": 3}
      }
    })

以下是我使用 Postman 发布(并且有效!)时发送的内容的服务器日志:

邮递员日志

以下是我尝试通过我的应用发帖时的日志:

来自应用程序的日志

我将不胜感激任何想法...

4

1 回答 1

0

在将嵌套的 json 传递给 FormData 之前对其进行编码。它会起作用的。例如:

String horseJson = json.encode({"name": "Abisynia", "breed": "demo", "sex": "male"});
String ownerJson = json.encode({
          "personal_data": "John Doe",
          "email": "asasdasss@gmail.com",
          "phone_number": "3556234432"
        });
String breakfastJson = json.encode({"name": "morning", "manufacturer": "Adasa", "amount": 1});
String dinnerJson = json.encode({"name": "noon", "manufacturer": "Aasd", "amount": 2});
String supperJson = json.encode({"name": "evening", "manufacturer": "ASds", "amount": 3});
String questiinnaireJson = json.encode({
        "horse": horseJson,
        "owner": ownerJson,
        "breakfast": breakfastJson,
        "dinner": dinnerJson,
        "supper": supperJson
      });
FormData formData = FormData.fromMap({
      "questionnaire": questiinnaireJson
    });
var response = await dio.post(url, data: formData, options: Options(headers:_headers));
于 2021-04-07T12:48:27.930 回答