2 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
ParseForm
只解析查詢參數(shù)。從文檔:
ParseForm 從 URL 解析原始查詢并更新 r.Form。
對于 POST 或 PUT 請求,它還將請求正文解析為表單,并將結(jié)果放入 r.PostForm 和 r.Form 中。POST 和 PUT 正文參數(shù)優(yōu)先于 r.Form 中的 URL 查詢字符串值。
如果請求正文的大小尚未受 MaxBytesReader 限制,則大小上限為 10MB。
ParseMultipartForm 自動調(diào)用 ParseForm。它是冪等的。
ParseMultipartForm
如果你想處理“multipart/form-data”,要么使用,要么不調(diào)用,讓FormValue
調(diào)用需要的東西。

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
是的,您應(yīng)該使用 enctype="multipart/form-data"。但是,如果您已經(jīng)使用了 FormValue(key string) 或 FormFile(key string) 方法,則不應(yīng)使用 ParseForm() 方法。
FormFile 返回提供的表單鍵的第一個(gè)文件。如有必要,F(xiàn)ormFile 會調(diào)用 ParseMultipartForm 和 ParseForm。
FormValue 返回查詢的命名組件的第一個(gè)值。POST 和 PUT 正文參數(shù)優(yōu)先于 URL 查詢字符串值。如有必要,F(xiàn)ormValue 會調(diào)用 ParseMultipartForm 和 ParseForm,并忽略這些函數(shù)返回的任何錯(cuò)誤。如果 key 不存在,則 FormValue 返回空字符串。要訪問同一鍵的多個(gè)值,請調(diào)用 ParseForm,然后直接檢查 Request.Form。
<form action="/fupload" method="POST" enctype="multipart/form-data">
<input type="file" name="fileupload">
</form>
file, _, err := req.FormFile("fileupload")
switch err {
case nil:
defer file.Close()
fileData, err := ioutil.ReadAll(file)
//check err
case http.ErrMissingFile:
//do something
default:
//do something
}
- 2 回答
- 0 關(guān)注
- 216 瀏覽
添加回答
舉報(bào)