gin 文件上传&存储
单文件上传#
需要在上传文件的 form 表单上面需要加入 enctype="multipart/form-data"
router.POST("/newFile", func(context *gin.Context) {
// FormFile 返回两个值,一个是对应的文件,一个是err,参数是是一个字符串,指定表单中文件字段的名称
file, err := context.FormFile("upload")
if err == nil {
filename := file.Filename // 上传的文件名字
// 文件要保存的目录, path.Join 将要保存的路径和文件名字拼接到一起
dst := path.Join("./static/upload", filename)
// SaveUploadedFile将文件保存到指定目录
// Param: 要保存的文件,要保存的路径
context.SaveUploadedFile(file, dst)
context.String(http.StatusOK,"%v文件上传成功",filename)
}
})
多文件上传#
不同文件名多文件上传#
- 不同文件名的多文件上传使用单文件上传的方式依次获取存储
同名文件多文件上传#
router.POST("/newFile", func(context *gin.Context) {
// 获取表单对象
form, _ := context.MultipartForm()
// 获取表单对象中的文件列表
fiels := form.File["upload[]"]
// 迭代文件列表
for _, file := range fiels {
// 保存
context.SaveUploadedFile(file, path.Join("./static/upload", file.Filename))
}
context.String(http.StatusOK, "ok")
})
按照日期存储文件&判断文件类型#
router.POST("/newFile", func(context *gin.Context) {
if file, err := context.FormFile("file"); err == nil {
// 通过path.Ext获取文件名的后缀名
extName := path.Ext(file.Filename)
// 定义一符合后缀的map
allowExt := map[string]bool{
".jpg": true,
".png": true,
".gif": true,
".jpeg": true,
}
// 如果获取到的值 不等于true
if _, ok := allowExt[extName]; ok != true {
context.String(http.StatusOK, "上传文件类型不合法")
return
}
// 自定义封装的方法,获取当前日期
day := models.NowDay()
// 要上传的目录,根据日期创建目录
dir := "./static/upload/" + day
// 创建要上传的目录,如果目录已存在 什么也不做
e := os.MkdirAll(dst, 0666)
// 创建目录失败
if e != nil {
context.String(http.StatusOK, "mkdir创建目录失败")
return
}
// 获取当前时间戳
unix := models.GetUnix()
// 用当前时间戳拼接后缀 当做文件名字
fileName := strconv.FormatInt(unix, 10) + extName
dst := path.Join(dir, fileName)
context.SaveUploadedFile(file, dst)
context.String(http.StatusOK,"ok")
}
})
风月都好看,人间也浪漫.
分类:
Golang-Gin框架
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)