golang使用正则表达式判断上传文件格式和大小

判断文件格式

 func isImg(name string) bool {
	ret,err:=regexp.MatchString(`^(\s|\S)+(gif|jpg|jpeg|png|GIF|JPG|JPEG|PNG|bmp|BMP)+$`, name)
	if err!=nil {
		return false
	}
	return ret
 }

 func isVideo(name string) bool {
	ret,err:=regexp.MatchString(`^(\s|\S)+(mp4|MP4)+$`, name)
	if err!=nil {
		return false
	}
	return ret
 }

 func isXlsx(name string) bool {
	ret,err:=regexp.MatchString(`^(\s|\S)+(xlsx)+$`, name)
	if err!=nil {
		return false
	}
	return ret
 }

beego判断文件大小

在Controller中直接调用this.getFile,这里获取的大小是b不是kb

 f, h, err := this.GetFile("img")
 if !isImg(h.Filename) || h.Size>sys_const.UPLOADFILESIZE_IMGE {
 return errors.New(fmt.Sprint("只能上传小于",sys_const.MAXUPLOADFILESIZE_IMGE,"M的图片"))
}

系统文件获取文件大小

 file, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY, 0644)
 defer file.Close()
 fi,_:=file.Stat()
 if fi.Size() > sys_const.UPLOADFILESIZE_IMGE {
	return "", errors.New(fmt.Sprint("只能上传小于",sys_const.MAXUPLOADFILESIZE_IMGE,"M 的图片格式文件"))
 }
posted @ 2022-01-05 14:21  不要摇头晃脑  阅读(23)  评论(0)    收藏  举报