MCPcopy
hub / github.com/flipped-aurora/gin-vue-admin / UploadFile

Method UploadFile

server/utils/upload/local.go:31–70  ·  view source on GitHub ↗

@author: [piexlmax](https://github.com/piexlmax) @author: [ccfish86](https://github.com/ccfish86) @author: [SliverHorn](https://github.com/SliverHorn) @object: *Local @function: UploadFile @description: 上传文件 @param: file *multipart.FileHeader @return: string, string, error

(file *multipart.FileHeader)

Source from the content-addressed store, hash-verified

29//@return: string, string, error
30
31func (*Local) UploadFile(file *multipart.FileHeader) (string, string, error) {
32 // 读取文件后缀
33 ext := filepath.Ext(file.Filename)
34 // 读取文件名并加密
35 name := strings.TrimSuffix(file.Filename, ext)
36 name = utils.MD5V([]byte(name))
37 // 拼接新文件名
38 filename := name + "_" + time.Now().Format("20060102150405") + ext
39 // 尝试创建此路径
40 mkdirErr := os.MkdirAll(global.GVA_CONFIG.Local.StorePath, os.ModePerm)
41 if mkdirErr != nil {
42 global.GVA_LOG.Error("function os.MkdirAll() failed", zap.Any("err", mkdirErr.Error()))
43 return "", "", errors.New("function os.MkdirAll() failed, err:" + mkdirErr.Error())
44 }
45 // 拼接路径和文件名
46 p := global.GVA_CONFIG.Local.StorePath + "/" + filename
47 filepath := global.GVA_CONFIG.Local.Path + "/" + filename
48
49 f, openError := file.Open() // 读取文件
50 if openError != nil {
51 global.GVA_LOG.Error("function file.Open() failed", zap.Any("err", openError.Error()))
52 return "", "", errors.New("function file.Open() failed, err:" + openError.Error())
53 }
54 defer f.Close() // 创建文件 defer 关闭
55
56 out, createErr := os.Create(p)
57 if createErr != nil {
58 global.GVA_LOG.Error("function os.Create() failed", zap.Any("err", createErr.Error()))
59
60 return "", "", errors.New("function os.Create() failed, err:" + createErr.Error())
61 }
62 defer out.Close() // 创建文件 defer 关闭
63
64 _, copyErr := io.Copy(out, f) // 传输(拷贝)文件
65 if copyErr != nil {
66 global.GVA_LOG.Error("function io.Copy() failed", zap.Any("err", copyErr.Error()))
67 return "", "", errors.New("function io.Copy() failed, err:" + copyErr.Error())
68 }
69 return filepath, filename, nil
70}
71
72//@author: [piexlmax](https://github.com/piexlmax)
73//@author: [ccfish86](https://github.com/ccfish86)

Callers

nothing calls this directly

Calls 5

OpenMethod · 0.80
FormatMethod · 0.65
NewMethod · 0.65
CloseMethod · 0.65
CreateMethod · 0.45

Tested by

no test coverage detected