logo
当前位置:首 页 > 编程技术 >后端开发 >Go > 查看文章

最近开发一个golang为开发后端接口语言的CMS,将几个标准件拆分出来分享下

图片上传代码:

 

/// 上传图片
func (Systemconfig)  SaveUploadedFile(c *gin.Context ) {
 
	headers ,err := c.FormFile("file")
	fmt.Println(err)
	if err != nil{
		fmt.Println(err)
	}
 
 
	dst :=headers.Filename
 
	fmt.Println(dst)
	if err := c.SaveUploadedFile(headers,dst) ; err != nil{
		fmt.Println(err)
	}
 
 
}

 

记得引入gin框架,不然会报错;

 

代码写好后总是有点需求:现在上传的是上传到web root文件夹,图片多了就有点难看了吧,一般标配都是到upload之类的文件夹:

 

/// 上传图片
func (Systemconfig)  SaveUploadedFile(c *gin.Context ) {
 
	headers ,err := c.FormFile("file")
	fmt.Println(err)
	if err != nil{
		fmt.Println(err)
	}
 
 
	//dst :=headers.Filename
	dst := path.Join("./upload", headers.Filename)   /// 添加到upload文件夹,这里没有验证和自动生成文件夹,所以需要手动创建文件夹,不然会报错
	fmt.Println(dst)
	if err := c.SaveUploadedFile(headers,dst) ; err != nil{
		fmt.Println(err)
	}
 
 
}

 

图片传好了,但是现在先改下文件名,上传的时候名叫 640.webp的文件想做的高端点变成:bc43a99a0f77c93ae7223c6a293f5b2c.webp这样的格式,就是时间戳加上一个随机数生成一个厉害的名字:

 

最终我的代码长这样:

/// 上传图片
func (Systemconfig)  SaveUploadedFile(c *gin.Context ) {
 
	headers ,err := c.FormFile("file")
	fmt.Println(err)
	if err != nil{
		fmt.Println(err)
	}
	crutime := time.Now().Unix() + rand.Int63n(10)
	h := md5.New()
	io.WriteString(h, strconv.FormatInt(crutime , 10))
	token := fmt.Sprintf("%x", h.Sum(nil))
 
	//dst :=headers.Filename
	dst := path.Join("./upload", headers.Filename)
 
	fmt.Println(dst)
	if err := c.SaveUploadedFile(headers,dst) ; err != nil{
		fmt.Println(err)
	}
 
	fmt.Println("fullFilename =", headers.Filename)
	var filenameWithSuffix string
	filenameWithSuffix = path.Base(headers.Filename)
	fmt.Println("filenameWithSuffix =", filenameWithSuffix)
	var fileSuffix string
	fileSuffix = path.Ext(filenameWithSuffix)
	fmt.Println("fileSuffix =", fileSuffix)
 
	var filenameOnly string
	filenameOnly = strings.TrimSuffix(filenameWithSuffix, fileSuffix)
	fmt.Println("filenameOnly =", filenameOnly)
	newdst :=path.Join("./upload" , token+""+fileSuffix)
 
	os.Rename(dst , newdst)
 
 
}

 

 

 

 

 

 

 

 

 

 

 

说说梦想,谈谈感悟 ,聊聊技术,有啥要说的来github留言吧 https://github.com/cjx2328

—— 陈 建鑫

陈建鑫
你可能也喜欢Related Posts
footer logo
未经许可请勿自行使用、转载、修改、复制、发行、出售、发表或以其它方式利用本网站之内容。站长联系:cjx2328#126.com(修改#为@)
Copyright ©ziao Studio All Rights Reserved. E-mail:cjx2328#126.com(#号改成@) 沪ICP备14052271号-3