我有一个简单的上传表单
<html>
<title>Go upload</title>
<body>
<form action="http://localhost:8899/up" method="post" enctype="multipart/form-data">
<label for="file">File Path:</label>
<input type="text" name="filepath" id="filepath">
<p>
<label for="file">Content:</label>
<textarea name="jscontent" id="jscontent" style="width:500px;height:100px" rows="10" cols="80"></textarea>
<p>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
和服务器端
package main
import (
"net/http"
"log"
)
func defaultHandler(w http.ResponseWriter, r *http.Request) {
log.Println(r.PostFormValue("filepath"))
}
func main() {
http.HandleFunc("/up", defaultHandler)
http.ListenAndServe(":8899", nil)
}
问题是当我使用 时enctype="multipart/form-data",我无法从客户端获取值r.PostFormValue,但是如果我设置为 就可以了enctype="application/x-www-form-urlencoded",去文档说
PostFormValue 返回 POST 或 PUT 请求正文的命名组件的第一个值。URL 查询参数被忽略。PostFormValue 会在必要时调用 ParseMultipartForm 和 ParseForm 并忽略这些函数返回的任何错误。
那么为什么他们没有说到enctype这里呢?
墨色风雨
喵喵时光机
繁华开满天机
随时随地看视频慕课网APP
相关分类