【问题标题】:I don't know how to use data sent from flutter in golang我不知道如何在golang中使用flutter发送的数据
【发布时间】:2021-11-11 02:48:37
【问题描述】:
        var request = http.MultipartRequest('post', Uri.parse(TravelingUrl.testAddress + '/test'));

        request.fields['title'] = createDiary.value.title as String;
        request.fields['tag_list'] = createDiary.value.tagList.toString();
        request.fields['date'] = createDiary.value.date.toString();

        for (var i = 0; i < createDiary.value.pages!.length; i++) {
          Pages _tempPage = createDiary.value.pages![i];
          request.fields['pages[$i][order]'] = jsonEncode(_tempPage.order);
          request.fields['pages[$i][description]'] =
              jsonEncode(_tempPage.description);
          for (var ii = 0; ii < _tempPage.images!.length; ii++) {
            request.files.add(await http.MultipartFile.fromPath(
                'pages[$i][images]', _tempPage.images![ii]));
          }
        }

        var response = await request.send();

上面的代码是flutter向golang传输数据的逻辑。

我想在 golang 中使用从颤振中接收到的数据。

我在 golang 中定义了这样的结构

    type _pages struct {
        Order       uint             `json:"order"`
        Description string           `json:"description"`
        Images      []multipart.File `json:"images"`
    }
    type _tags struct {
        TagId   uint   `json:"id"`
        TagName string `json:"tag_name"`
    }
    type _getData struct {
        Title    string `json:"title"`
        Date     string `json:"date"`
        Location string `json:"location"`
        Address  string `json:"address"`
        _tags
        _pages
    }

我对golang不熟悉,请帮忙,我能看一个简单的获取数据并使用它的例子吗?

数组变量中有文件数据,我想接收数据并将这个文件数据保存到s3。

【问题讨论】:

  • fmt.Print(r.FormValue("title")) 工作正常,但 fmt.Print(r.FormValue("pages")) 不起作用,
  • 我不知道页面上有多少项目
  • 这是大多数开发者使用的方式吗?

标签: amazon-web-services flutter dart go


【解决方案1】:

调用Request.FormValueRequest.FormFile 以获取值和文件。

对于类数组字段,像客户端一样生成字符串参数名称。循环遍历数组索引并在页面没有字段时中断。

title := r.FormValue("title")
tagList := r.FormValue("tag_list")
...
for i := 0; i < maxPossiblePages; i++ { 
   if _, ok := r.Form[fmt.Sprintf("pages[%d][order]", i)]; !ok { 
        break; 
   } 
   pageOrder := r.FormValue(fmt.Sprintf("pages[%d][order]", i))
   pageDescription := r.FormValue(fmt.Sprintf("pages[%d][description]", i))
   ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    相关资源
    最近更新 更多