Skip to content

Commit 817e34c

Browse files
committed
refactor🎨: 重构文件上传逻辑,拆分处理函数以提高可读性和维护性
1 parent 952cd92 commit 817e34c

File tree

1 file changed

+74
-81
lines changed

1 file changed

+74
-81
lines changed

app/other/apis/file.go

Lines changed: 74 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -45,144 +45,137 @@ func (e File) UploadFile(c *gin.Context) {
4545
e.MakeContext(c)
4646
tag, _ := c.GetPostForm("type")
4747
urlPrefix := fmt.Sprintf("%s://%s/", "http", c.Request.Host)
48-
var fileResponse FileResponse
4948

5049
switch tag {
5150
case "1": // 单图
52-
var done bool
53-
fileResponse, done = e.singleFile(c, fileResponse, urlPrefix)
54-
if done {
55-
return
56-
}
57-
e.OK(fileResponse, "上传成功")
58-
return
51+
e.handleSingleFile(c, urlPrefix)
5952
case "2": // 多图
60-
multipartFile := e.multipleFile(c, urlPrefix)
61-
e.OK(multipartFile, "上传成功")
62-
return
53+
e.handleMultipleFiles(c, urlPrefix)
6354
case "3": // base64
64-
fileResponse = e.baseImg(c, fileResponse, urlPrefix)
65-
e.OK(fileResponse, "上传成功")
55+
e.handleBase64File(c, urlPrefix)
6656
default:
67-
var done bool
68-
fileResponse, done = e.singleFile(c, fileResponse, urlPrefix)
69-
if done {
70-
return
71-
}
72-
e.OK(fileResponse, "上传成功")
57+
e.handleSingleFile(c, urlPrefix)
58+
}
59+
}
60+
61+
func (e File) handleSingleFile(c *gin.Context, urlPrefix string) {
62+
fileResponse, done := e.singleFile(c, FileResponse{}, urlPrefix)
63+
if done {
7364
return
7465
}
66+
e.OK(fileResponse, "上传成功")
67+
}
68+
69+
func (e File) handleMultipleFiles(c *gin.Context, urlPrefix string) {
70+
multipartFile := e.multipleFile(c, urlPrefix)
71+
e.OK(multipartFile, "上传成功")
72+
}
7573

74+
func (e File) handleBase64File(c *gin.Context, urlPrefix string) {
75+
fileResponse := e.baseImg(c, FileResponse{}, urlPrefix)
76+
e.OK(fileResponse, "上传成功")
7677
}
7778

78-
func (e File) baseImg(c *gin.Context, fileResponse FileResponse, urlPerfix string) FileResponse {
79+
func (e File) baseImg(c *gin.Context, fileResponse FileResponse, urlPrefix string) FileResponse {
7980
files, _ := c.GetPostForm("file")
8081
file2list := strings.Split(files, ",")
81-
ddd, _ := base64.StdEncoding.DecodeString(file2list[1])
82-
guid := uuid.New().String()
83-
fileName := guid + ".jpg"
84-
err := utils.IsNotExistMkDir(path)
85-
if err != nil {
82+
decodedData, _ := base64.StdEncoding.DecodeString(file2list[1])
83+
fileName := uuid.New().String() + ".jpg"
84+
85+
if err := utils.IsNotExistMkDir(path); err != nil {
8686
e.Error(500, errors.New(""), "初始化文件路径失败")
87+
return fileResponse
8788
}
89+
8890
base64File := path + fileName
89-
_ = ioutil.WriteFile(base64File, ddd, 0666)
91+
_ = ioutil.WriteFile(base64File, decodedData, 0666)
9092
typeStr := strings.Replace(strings.Replace(file2list[0], "data:", "", -1), ";base64", "", -1)
91-
fileResponse = FileResponse{
92-
Size: pkg.GetFileSize(base64File),
93-
Path: base64File,
94-
FullPath: urlPerfix + base64File,
95-
Name: "",
96-
Type: typeStr,
97-
}
93+
94+
fileResponse = e.buildFileResponse(base64File, urlPrefix, "", typeStr)
9895
source, _ := c.GetPostForm("source")
99-
err = thirdUpload(source, fileName, base64File)
100-
if err != nil {
96+
97+
if err := thirdUpload(source, fileName, base64File); err != nil {
10198
e.Error(200, errors.New(""), "上传第三方失败")
10299
return fileResponse
103100
}
101+
104102
if source != "1" {
105103
fileResponse.Path = "/static/uploadfile/" + fileName
106104
fileResponse.FullPath = "/static/uploadfile/" + fileName
107105
}
108106
return fileResponse
109107
}
110108

111-
func (e File) multipleFile(c *gin.Context, urlPerfix string) []FileResponse {
109+
func (e File) multipleFile(c *gin.Context, urlPrefix string) []FileResponse {
112110
files := c.Request.MultipartForm.File["file"]
113111
source, _ := c.GetPostForm("source")
114112
var multipartFile []FileResponse
113+
115114
for _, f := range files {
116-
guid := uuid.New().String()
117-
fileName := guid + utils.GetExt(f.Filename)
115+
fileName := uuid.New().String() + utils.GetExt(f.Filename)
118116

119-
err := utils.IsNotExistMkDir(path)
120-
if err != nil {
117+
if err := utils.IsNotExistMkDir(path); err != nil {
121118
e.Error(500, errors.New(""), "初始化文件路径失败")
119+
continue
122120
}
121+
123122
multipartFileName := path + fileName
124-
err1 := c.SaveUploadedFile(f, multipartFileName)
123+
if err := c.SaveUploadedFile(f, multipartFileName); err != nil {
124+
continue
125+
}
126+
125127
fileType, _ := utils.GetType(multipartFileName)
126-
if err1 == nil {
127-
err := thirdUpload(source, fileName, multipartFileName)
128-
if err != nil {
129-
e.Error(500, errors.New(""), "上传第三方失败")
130-
} else {
131-
fileResponse := FileResponse{
132-
Size: pkg.GetFileSize(multipartFileName),
133-
Path: multipartFileName,
134-
FullPath: urlPerfix + multipartFileName,
135-
Name: f.Filename,
136-
Type: fileType,
137-
}
138-
if source != "1" {
139-
fileResponse.Path = "/static/uploadfile/" + fileName
140-
fileResponse.FullPath = "/static/uploadfile/" + fileName
141-
}
142-
multipartFile = append(multipartFile, fileResponse)
143-
}
128+
if err := thirdUpload(source, fileName, multipartFileName); err != nil {
129+
e.Error(500, errors.New(""), "上传第三方失败")
130+
continue
131+
}
132+
133+
fileResponse := e.buildFileResponse(multipartFileName, urlPrefix, f.Filename, fileType)
134+
if source != "1" {
135+
fileResponse.Path = "/static/uploadfile/" + fileName
136+
fileResponse.FullPath = "/static/uploadfile/" + fileName
144137
}
138+
multipartFile = append(multipartFile, fileResponse)
145139
}
146140
return multipartFile
147141
}
148142

149-
func (e File) singleFile(c *gin.Context, fileResponse FileResponse, urlPerfix string) (FileResponse, bool) {
143+
func (e File) singleFile(c *gin.Context, fileResponse FileResponse, urlPrefix string) (FileResponse, bool) {
150144
files, err := c.FormFile("file")
151-
152145
if err != nil {
153146
e.Error(200, errors.New(""), "图片不能为空")
154147
return FileResponse{}, true
155148
}
156-
// 上传文件至指定目录
157-
guid := uuid.New().String()
158-
159-
fileName := guid + utils.GetExt(files.Filename)
160149

161-
err = utils.IsNotExistMkDir(path)
162-
if err != nil {
150+
fileName := uuid.New().String() + utils.GetExt(files.Filename)
151+
if err := utils.IsNotExistMkDir(path); err != nil {
163152
e.Error(500, errors.New(""), "初始化文件路径失败")
153+
return FileResponse{}, true
164154
}
155+
165156
singleFile := path + fileName
166-
_ = c.SaveUploadedFile(files, singleFile)
167-
fileType, _ := utils.GetType(singleFile)
168-
fileResponse = FileResponse{
169-
Size: pkg.GetFileSize(singleFile),
170-
Path: singleFile,
171-
FullPath: urlPerfix + singleFile,
172-
Name: files.Filename,
173-
Type: fileType,
157+
if err := c.SaveUploadedFile(files, singleFile); err != nil {
158+
e.Error(500, errors.New(""), "文件保存失败")
159+
return FileResponse{}, true
174160
}
175-
//source, _ := c.GetPostForm("source")
176-
//err = thirdUpload(source, fileName, singleFile)
177-
//if err != nil {
178-
// e.Error(200, errors.New(""), "上传第三方失败")
179-
// return FileResponse{}, true
180-
//}
161+
162+
fileType, _ := utils.GetType(singleFile)
163+
fileResponse = e.buildFileResponse(singleFile, urlPrefix, files.Filename, fileType)
181164
fileResponse.Path = "/static/uploadfile/" + fileName
182165
fileResponse.FullPath = "/static/uploadfile/" + fileName
183166
return fileResponse, false
184167
}
185168

169+
func (e File) buildFileResponse(filePath, urlPrefix, fileName, fileType string) FileResponse {
170+
return FileResponse{
171+
Size: pkg.GetFileSize(filePath),
172+
Path: filePath,
173+
FullPath: urlPrefix + filePath,
174+
Name: fileName,
175+
Type: fileType,
176+
}
177+
}
178+
186179
func thirdUpload(source string, name string, path string) error {
187180
switch source {
188181
case "2":

0 commit comments

Comments
 (0)