github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/blogweb_gin/controllers/album_controller.go (about)

     1  package controllers
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/gin-gonic/gin"
     6  	"github.com/qiuhoude/go-web/blogweb_gin/logs"
     7  	"github.com/qiuhoude/go-web/blogweb_gin/models"
     8  	"net/http"
     9  	"os"
    10  	"path/filepath"
    11  	"time"
    12  )
    13  
    14  func AlbumGet(c *gin.Context) {
    15  	islogin := GetSession(c)
    16  	albums, _ := models.FindAllAlbums()
    17  
    18  	c.HTML(http.StatusOK, "album.html", gin.H{"IsLogin": islogin, "Album": albums})
    19  }
    20  
    21  func UpladPost(c *gin.Context) {
    22  	fileHeader, err := c.FormFile("upload")
    23  	if err != nil {
    24  		responseErr(c, err)
    25  		return
    26  	}
    27  	logs.Info.Println("name:", fileHeader.Filename, fileHeader.Size)
    28  
    29  	fileExt := filepath.Ext(fileHeader.Filename)
    30  	logs.Info.Println("ext:", filepath.Ext(fileHeader.Filename)) // 扩展名
    31  	fileType := "other"
    32  	//判断后缀为图片的文件,如果是图片我们才存入到数据库中
    33  	if fileExt == ".jpg" || fileExt == ".png" || fileExt == ".gif" || fileExt == ".jpeg" {
    34  		fileType = "img"
    35  	}
    36  
    37  	now := time.Now()
    38  	//文件夹路径
    39  	fileDir := fmt.Sprintf("static/upload/%s/%d/%d/%d", fileType, now.Year(), now.Month(), now.Day())
    40  	err = os.MkdirAll(fileDir, os.ModePerm) //创建对应的文件夹
    41  	if err != nil {
    42  		responseErr(c, err)
    43  		return
    44  	}
    45  	timeStamp := now.Unix()
    46  	fileName := fmt.Sprintf("%d-%s", timeStamp, fileHeader.Filename)
    47  	filePathStr := filepath.Join(fileDir, fileName)
    48  
    49  	//将浏览器客户端上传的文件拷贝到本地路径的文件里面,此处也可以使用io操作
    50  	c.SaveUploadedFile(fileHeader, filePathStr)
    51  
    52  	filePathStrUnix := filepath.ToSlash(filePathStr)
    53  	if fileType == "img" {
    54  		// 如果是图片存到数据库
    55  		album := models.Album{0, filePathStrUnix, fileName, 0, timeStamp} //
    56  		models.InsertAlbum(album)
    57  	}
    58  	c.JSON(http.StatusOK, gin.H{"code": 1, "message": "上传成功"})
    59  }
    60  
    61  func responseErr(c *gin.Context, err error) {
    62  	c.JSON(http.StatusOK, gin.H{"code": 0, "message": err})
    63  }