文件存储在当前工程中,新建static/upload/file/这样路径的文件夹,可根据需求更换
例:backend_beego\static\upload\file
第一个是工程名称
当然随机生成的这个写的其实有点问题,如果随机生成的两个文件名一样的情况没考虑,后续会添加时间戳
func (c *UploadFileController) Post() {
//获取文件
f, h, err := c.GetFile("file")
//延迟关闭文件
defer f.Close()
//获取文件失败
if err != nil {
c.ErrMsg("获取文件失败")
}
//获取文件后缀名
suffix := path.Ext(h.Filename)
//拼接路径,随机生成12位文件名,文件格式
fileDir := "static/upload/file/" + RandString(12) + suffix
//文件存储失败
if err = c.SaveToFile("file", fileDir); err != nil {
c.ErrMsg(err.Error())
}
c.SuccessData(fileDir)
}
func RandString(len int) string {
r := rand.New(rand.NewSource(time.Now().UnixNano()))
bytes := make([]byte, len)
for i := 0; i < len; i++ {
b := r.Intn(26) + 65
bytes[i] = byte(b)
}
return string(bytes)
}