golang语言实现的文件上传与文件下载功能示例
本文实例讲述了golang实现的文件上传与文件下载功能。分享给大家供大家参考,具体如下:
upload.go
packagecommon import( "io/ioutil" "os" "path" "github.com/gin-gonic/gin" "googo.co/goo" "googo.co/utils" ) const( UPLOAD_DIR="static/" ) typeUploadstruct{ } func(thisUpload)DoHandle(c*gin.Context)*goo.Result{ fh,err:=c.FormFile("file") iferr!=nil{ returngoo.Err(700,"上传失败:"+err.Error(),err.Error()) } f,err:=fh.Open() iferr!=nil{ returngoo.Err(701,"上传失败:"+err.Error(),err.Error()) } deferf.Close() bytes,err:=ioutil.ReadAll(f) iferr!=nil{ returngoo.Err(702,"上传失败:"+err.Error(),err.Error()) } md5File:=utils.MD5(bytes) fpath:=md5File[0:2]+"/"+md5File[2:4]+"/" iferr:=os.MkdirAll(UPLOAD_DIR+fpath,0755);err!=nil{ returngoo.Err(703,"上传失败:"+err.Error(),err.Error()) } fname:=fpath+md5File[8:24]+path.Ext(fh.Filename) fw,err:=os.Create(UPLOAD_DIR+fname) iferr!=nil{ returngoo.Err(704,"上传失败:"+err.Error(),err.Error()) } deferfw.Close() if_,err:=fw.Write(bytes);err!=nil{ returngoo.Err(705,"上传失败:"+err.Error(),err.Error()) } returngoo.Succ(gin.H{ "url":"/file/"+fname, }) }
//上传文件 r.POST("/upload",goo.Handler(common.Upload{})) //下载文件 r.StaticFS("/file",http.Dir("./static")) //访问 http://localhost:18000/file/ab/cd/efghijk.png
希望本文所述对大家Go语言程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。