Curl Beego如何访问使用多部分/表单数据头提交的参数?

Curl Beego如何访问使用多部分/表单数据头提交的参数?,curl,go,multipartform-data,beego,Curl,Go,Multipartform Data,Beego,我遇到了如下问题: 当我向我的beego应用程序发出curl请求时 curl-X POST-H'内容类型:多部分/表单数据;charset=UTF-8'-F“file=@file.csv;filename=file.csv”-F“name=first” 我想从控制器访问nameparam,但当我尝试时 func(c*控制器)路径(){ … 变量名称字符串 c、 Ctx.Input.Bind(&name,“name”) //或者我尝试了“name:=c.GetString(“name”)” … }

我遇到了如下问题:
当我向我的
beego
应用程序发出
curl
请求时

curl-X POST-H'内容类型:多部分/表单数据;charset=UTF-8'-F“file=@file.csv;filename=file.csv”-F“name=first”

我想从控制器访问
name
param,但当我尝试时

func(c*控制器)路径(){

变量名称字符串
c、 Ctx.Input.Bind(&name,“name”)
//或者我尝试了“name:=c.GetString(“name”)”

}

结果总是一个空字符串作为
name
变量

我做错了什么?在这种情况下,如何访问参数?欢迎咨询

更新1
我尝试了
Parse to struct
方法,但运气不好

type   DataParams struct {
  Name string `form:"name"`
}

    cLDP := DataParams{}
    if err := c.ParseForm(&cLDP); err != nil {
        return ret, err
    }  
更新2
作为评论,我已经试过了

c.Ctx.Input.ParseFormOrMulitForm(99999)
var name string
c.Ctx.Input.Bind(&name, "name")
更新3
试了一次之后,我迷路了

name := c.Ctx.Input.Query("name")
params := c.Ctx.Input.Params()
name2 := c.GetString("name")
c.Ctx.Input.ParseFormOrMulitForm(99999)
params2 := c.Ctx.Input.Params()
fmt.Println("Debug 2->", name)
fmt.Println("Debug 5->", name2)
fmt.Println("Debug 3->", params)
fmt.Println("Debug 4->", params2)
输出为

Debug 2->
Debug 3-> map[...]
Debug 4-> map[...]
Debug 5->
未检测到名称参数

更新4
如果我使用
c.Ctx.Input.RequestBody
它是空的,这并不奇怪


仍然没有运气:(

您应该能够使用该方法访问
名称
参数值,如下所示:

name := c.Ctx.Input.Query("name")
如果要使用
Bind
,可以执行以下操作:

names := []string{}
if err := c.Ctx.Input.Bind(&names, "name"); err != nil {
    panic(err)
}
log.Println(name[0]) // first
但是您还必须更新
curl
,以明确地将
name
参数声明为具有索引的数组:

curl ... -F "name[0]=first"

这是因为Go在内部将表单的参数值存储在字符串片段中(请参阅),而beego也在使用它,因此beego解析表单后,它看起来像是
url.values{“name”:[]string{“first”}
,因此beego不知道如何绑定
[]string{“first”}
转换为普通的
字符串

在调用
Bind
之前,将“内容类型:多部分/表单数据”更改为enctype:multipart/表单数据

。请注意,多部分输入不是我的,这是该方法的定义方式。运气不好,请查看更新