为了账号安全,请及时绑定邮箱和手机立即绑定

在 golang (gin) 中访问数组 post 参数

在 golang (gin) 中访问数组 post 参数

Go
料青山看我应如是 2021-11-15 16:57:22
我正在尝试访问发布到用 Gin (golang) 编写的 API 的文件和值数组。我有一个函数,它需要一个文件,高度和宽度。然后调用函数来调整文件大小,然后将其上传到 S3。但是,我还尝试上传多个文件。func (rc *ResizeController) Resize(c *gin.Context) {    file, header, err := c.Request.FormFile("file")    filename := header.Filename    if err != nil {        log.Fatal(err)    }    height := c.PostForm("height")    width := c.PostForm("width")    finalFile := rc.Crop(height, width, file)    go rc.Upload(filename, finalFile, "image/jpeg", s3.BucketOwnerFull)    c.JSON(200, gin.H{"filename": filename})}我在文档中的任何地方都看不到如何以以下格式访问数据:item[0]fileitem[0]widthitem[0]heightitem[1]fileitem[1]widthitem[1]height等等。我想出了一些事情:for index, element := range c.Request.PostForm("item") {    fmt.Println(element.Height)}但这抛出了“c.Request.Values 未定义(类型 *http.Request 没有字段或方法值)”
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

您可以File直接访问切片,而不是使用FormFileon的方法Request。假设您有一个表单数组width,height它对应于文件上传的顺序。


if err := ctx.Request.ParseMultipartForm(32 << 20); err != nil {

    // handle error

}


for i, fh := range ctx.Request.MultipartForm.File["item"] {

    // access file header using fh

    w := ctx.Request.MultipartForm.Value["width"][i]

    h := ctx.Request.MultipartForm.Value["height"][i]

}

在FormFile对方法Request仅仅是围绕着包装MultipartForm.File传回了那个关键的第一个文件。


查看完整回答
反对 回复 2021-11-15
  • 1 回答
  • 0 关注
  • 730 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信