【问题标题】:Send map with specific key via html form通过 html 表单发送带有特定键的地图
【发布时间】:2017-07-25 07:40:48
【问题描述】:

我有一个像这样的表格

<form action="/upload" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="metadata[mimetype]" value="text/plain"/>
    <input type="hidden" name="metadata[size]" value="1024" />
    <input type="hidden" name="metadata[type]"  value="file" />
    <input type="file" name="file" multiple/>
    <input type="submit"/>
</form>

在我的 Go 应用程序中,我想得到一张像这样的地图

["mimetype":"text/plain",...]

但我将metadata["mimetype"] 作为键

这是我在 Go 中的逻辑

for key, values := range rq.Form {
            if len(values) > 0 {
                value := values[0]
                fmt.Println(key, value)
            }
        }

【问题讨论】:

    标签: forms go


    【解决方案1】:

    为什么不简单地更改表单输入名称以删除 metadata[] 部分?

    如果由于某种原因(例如,客户端 Javascript 依赖于这些名称)无法做到这一点,那么您可以使用以下内容创建一个新地图:

    values := make(map[string]string)
    for k, v := range r.Form {
        if len(v) > 0 {
            k = strings.TrimPrefix(k, "metadata[")
            k = strings.TrimSuffix(k, "]")
            values[k] = v[0]
        }
    }
    

    请注意,这是假设每个名称只有一个输入(string 而不是 []string),因为这是您指定的地图应采用的格式。

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 1970-01-01
      • 2020-11-08
      • 2012-08-21
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      相关资源
      最近更新 更多