猿问

输入 TYPE TEXT 值表单 (enctype="multipart/form-data")

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

}

对于输入类型 Text (eg) Company 这里总是返回 NULL,当 enctype="multipart/form-data"


精慕HU
浏览 172回答 2
2回答

RISEBY

ParseForm只解析查询参数。从文档:ParseForm 从 URL 解析原始查询并更新 r.Form。对于 POST 或 PUT 请求,它还将请求正文解析为表单,并将结果放入 r.PostForm 和 r.Form 中。POST 和 PUT 正文参数优先于 r.Form 中的 URL 查询字符串值。如果请求正文的大小尚未受 MaxBytesReader 限制,则大小上限为 10MB。ParseMultipartForm 自动调用 ParseForm。它是幂等的。ParseMultipartForm如果你想处理“multipart/form-data”,要么使用,要么不调用,让FormValue调用需要的东西。

海绵宝宝撒

是的,您应该使用 enctype="multipart/form-data"。但是,如果您已经使用了 FormValue(key string) 或 FormFile(key string) 方法,则不应使用 ParseForm() 方法。请求.FormFileFormFile 返回提供的表单键的第一个文件。如有必要,FormFile 会调用 ParseMultipartForm 和 ParseForm。请求.FormValueFormValue 返回查询的命名组件的第一个值。POST 和 PUT 正文参数优先于 URL 查询字符串值。如有必要,FormValue 会调用 ParseMultipartForm 和 ParseForm,并忽略这些函数返回的任何错误。如果 key 不存在,则 FormValue 返回空字符串。要访问同一键的多个值,请调用 ParseForm,然后直接检查 Request.Form。<form action="/fupload" method="POST" enctype="multipart/form-data">&nbsp; &nbsp;<input type="file" name="fileupload"></form>file, _, err := req.FormFile("fileupload")&nbsp; &nbsp; switch err {&nbsp; &nbsp; case nil:&nbsp; &nbsp; &nbsp; &nbsp; defer file.Close()&nbsp; &nbsp; &nbsp; &nbsp; fileData, err := ioutil.ReadAll(file)&nbsp; &nbsp; &nbsp; &nbsp; //check err&nbsp; &nbsp; case http.ErrMissingFile:&nbsp; &nbsp; &nbsp; &nbsp; //do something&nbsp; &nbsp; default:&nbsp; &nbsp; &nbsp; &nbsp; //do something&nbsp; &nbsp; }
随时随地看视频慕课网APP

相关分类

Go
我要回答