go: 图片文件上传
一,代码
go
//上传页面
func (ic *MediaController) Upload(c *gin.Context) {
c.HTML(200, "upload.html", nil)
}
//接收上传,多张图片
func (ic *MediaController) Uploaded(c *gin.Context) {
//得到form
form,err:=c.MultipartForm()
//得到文件列表
files:=form.File["f1m"]
//错误处理
if err != nil {
global.NewResult(c).ErrorCode(500,"图片上传失败",nil)
return
}
idStr:=global.FormattedNow("20060102150405");
dateStr:=global.FormattedNow("20060102");
preDir := "./static/ware/"+dateStr
//如果目录不存在,则创建它
if global.IsDirExists(preDir) == false {
// 创建多级目录
err := os.MkdirAll(preDir, 0755)
if err != nil {
fmt.Println(err)
}
}
//处理文件
var images []string
for i,f:=range files{
istr := strconv.Itoa(i)
destImage := preDir+"/"+idStr+"_"+istr+".jpg"
c.SaveUploadedFile(f,destImage)
//return image url
imageUrl := "/static/ware/"+dateStr+"/"+idStr+"_"+istr+".jpg"
images = append(images, imageUrl)
}
global.NewResult(c).Success(images)
}
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
多文件上传(可多选):<br/>
<form action="/media/uploaded" method="post" enctype="multipart/form-data">
<input type="text" name="id" id="id" placeholder="请输入id" /> <br/>
<input type="file" name="f1m" multiple /><br/>
<input type="submit" value="上传">
</form>
</body>
</html>
二,运行结果:

浙公网安备 33010602011771号