func fupload(w http.ResponseWriter, r *http.Request) {
if r.Method == "POST" {
r.ParseForm()
company := r.FormValue("company")
fmt.Println(company)
_, header, _ := r.FormFile("upfile")
fmt.Println(header.Filename)
return
}
w.Write([]byte("<html><body>"))
w.Write([]byte(fmt.Sprintf("<form method=\"POST\" enctype=\"multipart/form-data\">")))
w.Write([]byte("Enter Company <input type=\"text\" maxlength=\"80\" size=\"80\" name=\"company\" ><br/>"))
w.Write([]byte("File to upload: <input type=\"file\" name=\"upfile\" /><br/>"))
w.Write([]byte("<input type=\"submit\" value=\"Submit\"/>"))
w.Write([]byte("</form>"))
w.Write([]byte("</body></html>"))
return
}
对于enctype =“multipart / form-data”,对于输入类型Text(例如)Company,此处始终返回NULL。
最佳答案
ParseForm
仅解析查询参数。从文档:
ParseForm从URL解析原始查询并更新r.Form。
对于POST或PUT请求,它还将请求正文解析为一种形式
并将结果放入r.PostForm和r.Form中。 POST和PUT正文
参数优先于r.Form中的URL查询字符串值。
如果请求主体的大小尚未受到限制
MaxBytesReader,大小上限为10MB。
ParseMultipartForm自动调用ParseForm。它是幂等的。
如果要处理“multipart / form-data”,请使用 ParseMultipartForm
,或者不要调用任何一个,而让FormValue
调用所需的内容。