GIN檔案上傳 按照日期儲存
阿新 • • 發佈:2021-10-25
func main() { r := gin.Default() //配置模板檔案的路徑,放在路由配置的前面:載入templates下的所有檔案 r.LoadHTMLGlob("templates/**/*") r.GET("/user/add", func(c *gin.Context) { c.HTML(http.StatusOK, "admin/useradd.html", gin.H{}) }) r.POST("/admin/user/doUpload", func(c *gin.Context) { username := c.PostForm("username") //1、獲取上傳的檔案 file, err := c.FormFile("face") if err != nil { //失敗:獲取上傳的檔案 c.JSON(200, gin.H{ "msg": "失敗:獲取上傳的檔案", }) } //成功:獲取上傳的檔案 //2、獲取檔案的字尾名 判斷型別是否正確 .jpg .png .gif .jpeg extName := path.Ext(file.Filename) //允許上傳的格式 allowExtMap := map[string]bool{ ".jpg": true, ".png": true, ".gif": true, ".jpeg": true, } if _, ok := allowExtMap[extName]; !ok { c.JSON(200, gin.H{ "msg": "上傳的檔案不合法", }) //退出 return } //3、建立圖片儲存的目錄 static /upload/2021/1021 // 獲取今天的日期 day := models.GetDate() dir := "./static/upload/" + day if err := os.MkdirAll(dir, 0666); err != nil { //建立資料夾失敗 c.JSON(200, gin.H{ "msg": "MkdirAll失敗", }) } //生產檔名稱和檔案儲存的目錄 //檔名 = 獲取時間戳--上傳接收到的檔名稱 fileName := strconv.FormatInt(models.GetUnix(), 10) + "--" + extName //5、執行上傳 dst := path.Join("./static/upload", fileName) //成功 //儲存檔案到本地 c.SaveUploadedFile(file, dst) c.JSON(200, gin.H{ "msg": "上傳成功", }) c.JSON(200, gin.H{ "success": true, "username": username, "dst": dst, }) }) r.Run(":8080") }
package models
import "time"
//獲取當前的日期
func GetDate() string {
template := "2006-01-02 15:04:05"
return time.Now().Format(template)
}
//獲取時間戳
func GetUnix() int64 {
return time.Now().Unix()
}