如果要处理上传的文件,就必须使用multipart/form-data
编码,处理multipart/form-data
编码的请求时,解析使用ParseMultipartForm
,之后从MultipartForm
字段取值。
前端上传代码:
<form action="/multipartform" method="post" enctype="multipart/form-data">
<label>上传文件:</label>
<input type="text" name="age" />
<input type="file" name="file" />
<button type="submit">提交</button>
</form>
Go解析代码如下:
func UploadFile(c http.Context) error {
r := c.Request()
r.ParseMultipartForm(1024)
fileHeader := r.MultipartForm.File["file"][0]
file, err := fileHeader.Open()
if err != nil {
fmt.Println("Open failed: ", err)
return err
}
data, err := ioutil.ReadAll(file)
ioutil.WriteFile("./"+fileHeader.Filename,data,fs.ModeDevice)
//普通参数
name := r.MultipartForm.Value["name"]
fmt.Sprintf("%s",name)
return nil
}