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>

二,运行结果:

image

posted @ 2025-09-20 09:51  刘宏缔的架构森林  阅读(10)  评论(0)    收藏  举报