可切换本地与七牛云上传,增加头像与图片组建
This commit is contained in:
53
server/utils/upload_file_local.go
Normal file
53
server/utils/upload_file_local.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"gin-vue-admin/global"
|
||||
"io"
|
||||
"mime/multipart"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
func UploadFileLocal(file *multipart.FileHeader) (err error, localPath string, key string) {
|
||||
// 读取文件后缀
|
||||
ext := path.Ext(file.Filename)
|
||||
// 读取文件名并加密
|
||||
fileName := strings.TrimSuffix(file.Filename, ext)
|
||||
fileName = MD5V([]byte(fileName))
|
||||
// 拼接新文件名
|
||||
lastName := fileName + "_" + time.Now().Format("20060102150405") + ext
|
||||
// 读取全局变量的定义路径
|
||||
savePath := global.GVA_CONFIG.LocalUpload.FilePath
|
||||
// 尝试创建此路径
|
||||
err = os.MkdirAll(savePath, os.ModePerm)
|
||||
if err != nil{
|
||||
global.GVA_LOG.Error("upload local file fail:", err)
|
||||
return err, "", ""
|
||||
}
|
||||
// 拼接路径和文件名
|
||||
dst := savePath + "/" + lastName
|
||||
// 下面为上传逻辑
|
||||
// 打开文件 defer 关闭
|
||||
src, err := file.Open()
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("upload local file fail:", err)
|
||||
return err, "", ""
|
||||
}
|
||||
defer src.Close()
|
||||
// 创建文件 defer 关闭
|
||||
out, err := os.Create(dst)
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("upload local file fail:", err)
|
||||
return err, "", ""
|
||||
}
|
||||
defer out.Close()
|
||||
// 传输(拷贝)文件
|
||||
_, err = io.Copy(out, src)
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("upload local file fail:", err)
|
||||
return err, "", ""
|
||||
}
|
||||
return nil, dst, lastName
|
||||
}
|
Reference in New Issue
Block a user