分享
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
**模板代码如下**
```html
<form id="fform" method="POST" enctype="multipart/form-data" action="/upload">
<input id="myfile" name="myfile" type="file" />
<input type="submit" value="保存" />
</form>
```
**上传代码实现如下**
```go
package controllers
import (
"path"
"crypto/md5"
"time"
"fmt"
"github.com/astaxie/beego"
"math/rand"
"os"
)
type UploadController struct{
beego.Controller
}
func (this *UploadController) UpForm(){
this.TplName = "upload.tpl"
}
func (this *UploadController) UpFile(){
f, h, _ := this.GetFile("myfile")//获取上传的文件
ext := path.Ext(h.Filename)
//验证后缀名是否符合要求
var AllowExtMap map[string]bool = map[string]bool{
".jpg":true,
".jpeg":true,
".png":true,
}
if _,ok:=AllowExtMap[ext];!ok{
this.Ctx.WriteString( "后缀名不符合上传要求" )
return
}
//创建目录
uploadDir := "static/upload/" + time.Now().Format("2006/01/02/")
err := os.MkdirAll( uploadDir , 777)
if err != nil {
this.Ctx.WriteString( fmt.Sprintf("%v",err) )
return
}
//构造文件名称
rand.Seed(time.Now().UnixNano())
randNum := fmt.Sprintf("%d", rand.Intn(9999)+1000 )
hashName := md5.Sum( []byte( time.Now().Format("2006_01_02_15_04_05_") + randNum ) )
fileName := fmt.Sprintf("%x",hashName) + ext
//this.Ctx.WriteString( fileName )
fpath := uploadDir + fileName
defer f.Close()//关闭上传的文件,不然的话会出现临时文件不能清除的情况
err = this.SaveToFile("myfile", fpath)
if err != nil {
this.Ctx.WriteString( fmt.Sprintf("%v",err) )
}
this.Ctx.WriteString( "上传成功~!!!!!!!" )
}
```
有疑问加站长微信联系(非本文作者))
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信9489 次点击
下一篇:Golang Notes
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传