8月22日周记

这周在做腾讯mini项目,每天都有学到新的东西,都写在日报里了

这篇博客就水一下,放几个我自己写的工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// PostFileUtils
// @Author: fran6k
// @Description: 转化成post方法需要的form-data格式
// @param fileName
// @param params
// @return contentType
// @return ioBody
func PostFileUtils(fileName string, params map[string]string) (contentType string, ioBody *bytes.Buffer) {
// 打开文件
file, err := os.Open(global.GVA_CONFIG.Local.GorFilePath + fileName)
if err != nil {
return
}
defer file.Close()
// 缓冲区
body := &bytes.Buffer{}
// Writer写入缓冲区
writer := multipart.NewWriter(body)
// 创建file类型的form-data参数
part, err := writer.CreateFormFile("file", fileName)
// 将文件流写入part
_, err = io.Copy(part, file)
// 添加参数
if len(params) != 0 {
for k, v := range params {
_ = writer.WriteField(k, v)
}
}
err = writer.Close()
return writer.FormDataContentType(), body

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// CheckFileName
// @Author: fran6k
// @Description: 文件名查重处理
// @param hostId
// @param fileName
// @return newName
// @return err
func CheckFileName(hostId int, fileName string) (newName string, err error) {
index := 1
prefix := strings.Split(fileName, ".")[0]
suffix := strings.Split(fileName, ".")[1]
checkName := fileName
for {
// 查询数据库,有无重复的文件名,你要用的话可以换成自己的查询逻辑,不一定是数据库
runningHost := service.FindFileName(hostId, checkName)
if runningHost != (model.RunningHosts{}) {
checkName = prefix + "(" + strconv.Itoa(index) + ")" + "." + suffix
index++
} else {
break
}
}
return checkName, nil
}