首页 > 其他分享 >Gin 文件上传 按照日期存储

Gin 文件上传 按照日期存储

时间:2024-01-17 11:13:51浏览次数:20  
标签:文件 存储 err true 保存 file Gin 上传

Gin 文件上传 按照日期存储

1 实现步骤

/*
	1.获取上传的文件
	2.获取后缀名 判断类型是否正确 .jpg .png .gif .jpeg
	3.创建图片保存目录 static/upload/20240101
	4.生成文件名称和文件保存的目录
	5.保存
*/

2 代码

// 获取当前的日期
func GetDay() string {
	template := "20060102"
	return time.Now().Format(template)
}

// 获取时间戳
func GetUnix() int64 {
	return time.Now().Unix()
}

func (con ApiController) DoUpload(c *gin.Context) {
	// 1.获取上传的文件
	file, err := c.FormFile("file")
	if err != nil {
		con.Error(c)
	}
	// 2.获取后缀名 判断类型是否正确 .jpg .png .gif .jpeg
	extName := path.Ext(file.Filename)

	allowExtMap := map[string]bool{
		".jpg":  true,
		".png":  true,
		".gif":  true,
		".jpeg": true,
	}

	_, ok := allowExtMap[extName]
	if ok {
		c.JSON(http.StatusOK, gin.H{
			"err": "上传的文件不合法",
		})
	}

	// 3.创建图片保存目录
	day := GetDay()

	// 文件保存目录
	dir := path.Join("./static/upload", day)

	if err := os.MkdirAll(dir, 0666); err != nil {
		c.JSON(http.StatusOK, gin.H{
			"err": "目录创建失败",
		})
	}

	// 4.生成保存目录,以及文件名
	// 生成文件名称,防止重名的覆盖
	fileName := strconv.FormatInt(GetUnix(), 10) + extName

	dst := path.Join(dir, fileName)

	// 保存图片
	c.SaveUploadedFile(file, dst)
    
    con.Success(c)
}

标签:文件,存储,err,true,保存,file,Gin,上传
From: https://www.cnblogs.com/chunyouqudongwuyuan/p/17969510

相关文章

  • Gin中的Session
    Gin中的Session1Session简单介绍session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而session保存在服务器上。2Session的工作流程当客户端浏览器第一次访问服务器并发送请求时,服务器端会创建一个session对象,生成一个类似于key,value的键值对,然后将va......
  • Gin中的Cookie
    Gin中的Cookie1Cookie简介/* ●HTTP是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何关系的。如果我们要实现多个页面之间共享数据的话我们就可以使用Cookie或者Sessio......
  • GIn入门
    Gin入门1.Gin安装goget-ugithub.com/gin-gonic/gin2.将gin引入到代码中:import"github.com/gin-gonic/gin"2.1(可选)如果使用诸如http.StatusOK之类的常量,则需要引入net/http包:import"net/http"2.2初始化gomodgomodinit/*生成go.mod文件,此命令会在当......
  • 出现了HTTPSConnectionPool(host=‘huggingface.co‘, port=443)错误的解决方法
    在下载huggingface模型的时候,经常会出现这个错误,HTTPSConnectionPool(host=‘huggingface.co’,port=443)。如在下载Tokenizer的时候,tokenizer=AutoTokenizer.from_pretrained("csebuetnlp/mT5_multilingual_XLSum")就会出现以上的错误HTTPSConnectionPool(host=‘hug......
  • Inserting a node at beginning,全局变量头指针【1月16日学习笔记】
    点击查看代码//insertinganodeatbeginning,全局变量头指针#include<iostream>usingnamespacestd;structnode{ intdata; node*next;};node*A;voidinsert(intx){ node*temp=newnode;//创建新节点 temp->data=x; temp->next=A;//新节点尾巴指......
  • Inserting a node at beginning,局部变量头指针版本1【1月16日学习笔记】
    点击查看代码//insertinganodeatbeginning,局部变量头指针版本1#include<iostream>usingnamespacestd;structnode{ intdata; node*next;};node*insert(intx,node*A){ node*temp=newnode;//创建新节点 temp->data=x; temp->next=A;//新节......
  • Inserting a node at beginning,局部变量头指针版本2【1月16日学习笔记】
    点击查看代码//insertinganodeatbeginning,局部变量头指针版本2#include<iostream>usingnamespacestd;structnode{ intdata; node*next;};voidinsert(intx,node**A){ node*temp=newnode;//创建新节点 temp->data=x; temp->next=*A;//新......
  • Markdown文件上传博客园
    Markdown文件上传博客园冲浪发现了能直接上传markdown文件的脚本,不用自己慢慢复制了,非常好用~所需工具:Typora需要破解版,网上很多。pythonpycnblog(实现md文件上传的脚本):https://github.com/dongfanger/pycnblogTypora的设置:​ 上传笔记肯定会有图片,需要对Typora的相关......
  • OSS 上传和删除图片 Python SDK
    最近在搞一些全栈的小项目,涉及到图片的上传,删改等操作,想着还是用这个云服务器来整一波,阿里云的OSS对象存储,40G1年9块钱,值得拥有!前提购买了阿里云OSS服务创建了AccessKey和AccessKeySecret创建了一个Bucket,虽然也可以用代码,但没有必要安装了Py......
  • 第七天:磁盘存储、分区和文件系统
    一、磁盘结构1、设备放在/dev文件下面硬盘:sdanvme虚拟:xvdvdmknod:创建设备2、硬盘类型接口类型:IDESCSISATASASUSBM.2机械硬盘和固态硬盘3、open(),read(),write(),close()文件操作二、分区类型设备分区、创建文件系统、挂载新的文件系......