4 changed files with 78 additions and 5 deletions
@ -0,0 +1,65 @@ |
|||||
|
package controllers |
||||
|
|
||||
|
import ( |
||||
|
"github.com/astaxie/beego" |
||||
|
"path" |
||||
|
"time" |
||||
|
"os" |
||||
|
"fmt" |
||||
|
"crypto/md5" |
||||
|
"math/rand" |
||||
|
"beeblog/models" |
||||
|
) |
||||
|
|
||||
|
type FileController struct { |
||||
|
beego.Controller |
||||
|
} |
||||
|
|
||||
|
func (this *FileController) Upload() { |
||||
|
filename := "" |
||||
|
for filename, _ = range this.Ctx.Request.MultipartForm.File {} |
||||
|
f, h, filerr := this.GetFile(filename) //获取上传的文件
|
||||
|
if filerr != nil { |
||||
|
fmt.Println("err:", filerr) |
||||
|
this.Data["json"] = models.ReurnError(500, "后缀名不符合上传要求") |
||||
|
this.ServeJSON() |
||||
|
return |
||||
|
} |
||||
|
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.Data["json"] = models.ReurnError(500, "后缀名不符合上传要求") |
||||
|
this.ServeJSON() |
||||
|
return |
||||
|
} |
||||
|
//创建目录
|
||||
|
uploadDir := "static/upload/" + time.Now().Format("2006/01/02/") |
||||
|
err := os.MkdirAll(uploadDir, 777) |
||||
|
if err != nil { |
||||
|
this.Data["json"] = models.ReurnError(500, "") |
||||
|
this.ServeJSON() |
||||
|
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 |
||||
|
fpath := uploadDir + fileName |
||||
|
defer f.Close() //关闭上传的文件,不然的话会出现临时文件不能清除的情况
|
||||
|
err = this.SaveToFile(filename, fpath) |
||||
|
if err != nil { |
||||
|
fmt.Println(err) |
||||
|
this.Data["json"] = models.ReurnError(500, "") |
||||
|
this.ServeJSON() |
||||
|
return |
||||
|
} |
||||
|
this.Data["json"] = models.ReurnData("",fpath) |
||||
|
this.ServeJSON() |
||||
|
return |
||||
|
} |
Loading…
Reference in new issue