访问golang(杜松子酒)中的数组post params

时间:2015-10-16 15:31:02

标签: go

我正在尝试访问发布到用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]file
item[0]width
item[0]height
item[1]file
item[1]width
item[1]height

我想到了以下几点:

for index, element := range c.Request.PostForm("item") {
    fmt.Println(element.Height)
}

但是扔了“c.Request.Values undefined(类型* http.Request没有字段或方法值)”

1 个答案:

答案 0 :(得分:3)

您可以直接访问File切片,而不是使用FormFile上的Request方法。假设您有widthheight的表单数组,这些数组对应于文件上传的顺序。

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的包装器,它返回该键的第一个文件。