dongzhan8620
dongzhan8620
2015-03-09 10:42
浏览 56
已采纳

Golang GET多部分表单数据

Let say I have a html form

<form enctype="multipart/form-data" action="http://localhost:8080/incarcat" method="post">
    <input type="file" name="file" multiple="multiple"/>
    <input type="checkbox" name="delete" value="delete">
    <input type="submit" value="Load" />
</form>

and the following go code

read_form, err := req.MultipartReader()
for {
    part, err_part := read_form.NextPart()
    if err_part == io.EOF {
        break
    }
    if part.FormName() == "file" {
        //do something with files
    } else if part.FormName() == "delete" {
        //curata_folder()
        log.Println("delete is: ", part.Header.Get("delete"))
    }
}

How do i get the value of "delete"?

part.Header.Get("delete"))

it's not working

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • douaoj0994
    douaoj0994 2015-03-09 11:08
    已采纳

    You can probably content yourself by using the request.ParseMultipartForm method, then use the request.FormValue to get values as usual. Note that you also have the request.MultipartForm to get access to your files.

    Example:

    func(w http.ResponseWriter, r *http.Request) {
        // Here the parameter is the size of the form data that should
        // be loaded in memory, the remaining being put in temporary
        // files
        r.ParseMultipartForm(0)
    
        fmt.Println(r.FormValue("delete"))
    }
    
    点赞 评论
  • dongzouche9108
    dongzouche9108 2016-02-28 20:08

    The part implements the io.Reader interface. I am assuming what you are really asking is how to convert the part reader into a string, in the case that it is not a file. You can do so like this:

    for {
       part, err_part := read_form.NextPart()
       if err_part == io.EOF {
          break
       }
       if part.FormName() == "delete" {
          buf := new(bytes.Buffer)
          buf.ReadFrom(part)
          log.Println("delete is: ", buf.String())
       } 
    }
    
    点赞 评论

相关推荐