File upload 使用Golang-Gin检索已发布的文件

File upload 使用Golang-Gin检索已发布的文件,file-upload,go,File Upload,Go,我使用Golang框架Gin已经有一段时间了,没有任何问题,但我现在需要处理发布到API的图像 我可能知道如何验证、调整大小和存储图像,但目前我只是在努力弄清楚如何获取发布的文件并将其分配给变量 我看过Gin API文档,但没有任何东西向我跳出来 我将我的API卷曲如下(这可能是错误的?) 尝试从gin.Context获取HTTP请求并从其Body属性读取: func(c *gin.Context) { decoder := json.NewDecoder(c.Request.Body)

我使用Golang框架Gin已经有一段时间了,没有任何问题,但我现在需要处理发布到API的图像

我可能知道如何验证、调整大小和存储图像,但目前我只是在努力弄清楚如何获取发布的文件并将其分配给变量

我看过Gin API文档,但没有任何东西向我跳出来

我将我的API卷曲如下(这可能是错误的?)


尝试从gin.Context获取HTTP请求并从其Body属性读取:

func(c *gin.Context) {
    decoder := json.NewDecoder(c.Request.Body)
    var t struct {
      Name string `json:"json_name"`
      Title string `json:"title"`
      Url string `json:"url"`
    }
    err := decoder.Decode(&t)
    if err != nil {
        panic()
    }
    log.Println(t)
}

我将尝试回答检索文件名并将其分配给变量的问题,因为处理json部分已经由@AlexAtNet负责。 让我知道这是否适合你

    func (c *gin.Context) {

        file, header , err := c.Request.FormFile("upload")
        filename := header.Filename
        fmt.Println(header.Filename)
        out, err := os.Create("./tmp/"+filename+".png")
        if err != nil {
            log.Fatal(err)
        }
        defer out.Close()
        _, err = io.Copy(out, file)
        if err != nil {
            log.Fatal(err)
        }   
    }

我想在上面的curl中澄清一下,您想将png分配给变量还是post body内容?@KunalJha我想检索一个已经发布到我的API中的图像(并对其进行操作)。上面的curl只是我发布图像的一个尝试。非常感谢Kunal,我只需要将标题类型更改为-H“Content-type:multipart/form-data”您有多个文件的代码片段吗?
    func (c *gin.Context) {

        file, header , err := c.Request.FormFile("upload")
        filename := header.Filename
        fmt.Println(header.Filename)
        out, err := os.Create("./tmp/"+filename+".png")
        if err != nil {
            log.Fatal(err)
        }
        defer out.Close()
        _, err = io.Copy(out, file)
        if err != nil {
            log.Fatal(err)
        }   
    }