上一节学习了POST请求,Form、PostForm、MultipartForm,关于POST还有2个功能,一个是上传文件,1个是JSON文件。
先学习下上传文件。
1. 文件上传
代码解析:
func FormUpload(w http.ResponseWriter, r *http.Request) {
//ParseMultipartForm将请求体解析为multipart/form-data。
//解析整个请求,1024是指其文件部分的maxMemory字节1024字节存储在内存,剩余的部分存储在临时文件。
_ = r.ParseMultipartForm(1024)
//获取文件信息,其中name是上传文件时所用的”name”名,[0]代表是第1个文件,tmp是FileHeader的结构体.
tmp := r.MultipartForm.File[“name”][0]
//获取文件头
log.Println(tmp.Header)
//获取文件大小
log.Println(tmp.Size)
//获取文件名
log.Println(tmp.Filename)
//打开后,返回File。
file, _ := tmp.Open()
//读取file文件,返回字节集
bytes, _ := ioutil.ReadAll(file)
//将读取的内容输出到页面
_, _ = w.Write(bytes)
}
总结一下上传步骤:
(1)调用ParseMultipartForm,解析请求
(2) 从MultipartForm.File获取文件信息
(3)使用ioutil.ReadAll将文件读入,转成字节集
2. 文件上传方法2
采用FormFile方法
FormFile和MultipartForm.File相似,但是不同的是,FormFile返回的是第一个文件。
执行结果
使用FormFile方法更加简便,并需要调用ParseMultipartForm进行解析,同时返回multipart.File、FileHeader和error。
因此如果一次只上传一个文件,用这个方法更贱简便。