1. 单文件上传
file, err := c.FormFile("face")//从表单中获取键对应的值
dst := path.Join("Gin/static/upload", file.Filename)
if err == nil {
c.SaveUploadedFile(file, dst)//根据dst路径保存文件
}
c.JSON(http.StatusOK, gin.H{
"success": true,
"username": username,
"dst": dst,
})//返回前端数据
2. 多文件上传
form, _ := c.MultipartForm() //form变量被赋值为一个多文件的表单
files := form.File["face[]"]//从form中取所有相同键的值(底层map)
for _, file := range files {//遍历files
dst := path.Join("Gin/static/upload", file.Filename)
c.SaveUploadedFile(file, dst)//每次遍历都在dst路径中存储文件
}
c.JSON(http.StatusOK, gin.H{
"success": true,
"username": username,
})//返回前端数据
3. 根据日期上传图片(同文件夹下同名图片不覆盖)
//1. 获取上传的文件
file, err := c.FormFile("face")
if err == nil {
//2. 获取文件后缀名
extName := path.Ext(file.Filename)
allowExtMap := map[string]bool{
".jpg": true,
".png": true,
".gif": true,
".jpeg": true,
".webp": true,
}//通过map指定能接受的文件的后缀名
if !allowExtMap[extName] {
c.String(200, "上传的文件类型不合法")
return
}
//3. 创建图片保存的目录
day := models.GetDay()
dir := "Gin/static/upload/" + day
err := os.MkdirAll(dir, 0666)
if err != nil {
fmt.Println(err)
c.String(http.StatusOK, "MkdirAll失败")
return
}
//4. 生成文件名称和文件保存的目录
fileName := strconv.FormatInt(models.GetUnix(), 10) + extName
//5. 执行上传
dst := path.Join(dir, fileName)
c.SaveUploadedFile(file, dst)
}
c.JSON(http.StatusOK, gin.H{
"success": true,
"username": username,
})
到此文件上传操作结束.
注意:以上日期上传图片用到的models包下的方法:
package models
import "time"
/**
*
* @author yth
* @language go
* @since 2022/11/12 8:47
*/
// UnixToTime 时间戳转换成日期
func UnixToTime(timestamp int) string {
t := time.Unix(int64(timestamp), 0)
return t.Format("2006-01-02 15:04:05")
}
// DateToUnix 日期转换成时间戳
func DateToUnix(str string) int64 {
template := "2006-01-02 15:04:05"
t, err := time.ParseInLocation(template, str, time.Local)
if err != nil {
return 0
}
return t.Unix()
}
// GetUnix 获取时间戳
func GetUnix() int64 {
return time.Now().Unix()
}
// GetDate 获取当前的日期
func GetDate() string {
template := "2006-01-02 15:04:05"
return time.Now().Format(template)
}
// GetDay 获取年月日
func GetDay() string {
template := "20060102"
return time.Now().Format(template)
}