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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。