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

我正在尝试访问发布到用 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 未定义(类型 *http.Request 没有字段或方法值)”


料青山看我应如是
浏览 738回答 1
1回答

呼如林

您可以File直接访问切片,而不是使用FormFileon的方法Request。假设您有一个表单数组width,height它对应于文件上传的顺序。if err := ctx.Request.ParseMultipartForm(32 << 20); err != nil {&nbsp; &nbsp; // handle error}for i, fh := range ctx.Request.MultipartForm.File["item"] {&nbsp; &nbsp; // access file header using fh&nbsp; &nbsp; w := ctx.Request.MultipartForm.Value["width"][i]&nbsp; &nbsp; h := ctx.Request.MultipartForm.Value["height"][i]}在FormFile对方法Request仅仅是围绕着包装MultipartForm.File传回了那个关键的第一个文件。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go