Merge branch 'refs/heads/feat-file' into master-pg
This commit is contained in:
commit
c38b749e36
16
dao/file.go
16
dao/file.go
|
|
@ -59,3 +59,19 @@ func UpdateFileByID(id, auth_id int, fileStoreName, fileName, fileType, filePath
|
|||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func DeleteFileByAuthID(auth_id int) bool {
|
||||
res := DB.Debug().Model(&File{}).Where("auth_id = ?", auth_id).Delete(&File{})
|
||||
if res.Error != nil {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func DeleteFileById(id int) bool {
|
||||
res := DB.Debug().Model(&File{}).Where("id = ?", id).Delete(&File{})
|
||||
if res.Error != nil {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,35 @@ func SetUpToolGroup(router *gin.Engine) {
|
|||
//文件上传、下载
|
||||
toolGroup.POST("/upload", UploadFile)
|
||||
toolGroup.GET("/download", DownloadFile)
|
||||
//文件管理
|
||||
toolGroup.POST("/file_del", DelFile)
|
||||
}
|
||||
|
||||
func DelFile(c *gin.Context) {
|
||||
//先查看是否有权限
|
||||
id, _ := c.Get("id")
|
||||
id1 := int(id.(float64))
|
||||
|
||||
file_id, _ := strconv.Atoi(c.PostForm("id"))
|
||||
|
||||
file_ := dao.FindFileByID(file_id, id1)
|
||||
if file_.ID == 0 {
|
||||
c.JSON(http.StatusOK, gin.H{"error": "file not found", "code": proto.FileNotFound, "message": "failed"})
|
||||
return
|
||||
}
|
||||
//删除文件
|
||||
err := os.Remove(file_.FilePath + "/" + file_.FileStoreName)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusOK, gin.H{"error": "delete file failed", "code": proto.DeleteFileFailed, "message": "failed"})
|
||||
return
|
||||
}
|
||||
//删除文件信息
|
||||
if res := dao.DeleteFileById(file_id); !res {
|
||||
c.JSON(http.StatusOK, gin.H{"error": "delete file info failed", "code": proto.DeleteFileInfoFailed, "message": "failed"})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "message": "success"})
|
||||
|
||||
}
|
||||
|
||||
func UploadFile(c *gin.Context) {
|
||||
|
|
@ -53,7 +82,7 @@ func UploadFile(c *gin.Context) {
|
|||
}
|
||||
|
||||
//保存文件
|
||||
filePath, fileStoreName, err := service.SaveFile(file, uploadType)
|
||||
filePath, fileStoreName, err := service.SaveFile(c, file, uploadType)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusOK, gin.H{"error": "save file failed", "code": proto.SaveFileFailed, "message": "failed"})
|
||||
return
|
||||
|
|
|
|||
|
|
@ -51,10 +51,12 @@ const (
|
|||
MsgSendFailed = 61 // 消息发送失败
|
||||
|
||||
//文件错误码
|
||||
FileNotFound = 71 // 文件不存在
|
||||
FileUploadFailed = 72 // 文件上传失败
|
||||
SaveFileInfoFailed = 73 // 保存文件信息失败
|
||||
SaveFileFailed = 74 // 保存文件失败
|
||||
UploadFileFailed = 75 // 上传文件失败
|
||||
NoUploadPermissions = 76 // 无上传权限
|
||||
FileNotFound = 71 // 文件不存在
|
||||
FileUploadFailed = 72 // 文件上传失败
|
||||
SaveFileInfoFailed = 73 // 保存文件信息失败
|
||||
SaveFileFailed = 74 // 保存文件失败
|
||||
UploadFileFailed = 75 // 上传文件失败
|
||||
NoUploadPermissions = 76 // 无上传权限
|
||||
DeleteFileFailed = 77 // 删除文件失败
|
||||
DeleteFileInfoFailed = 78 // 删除文件信息失败
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
"io"
|
||||
"mime/multipart"
|
||||
"os"
|
||||
"path"
|
||||
|
|
@ -26,7 +26,7 @@ func getFilePath(path string) string {
|
|||
return filePath
|
||||
}
|
||||
|
||||
func SaveFile(file *multipart.FileHeader, uploadType string) (string, string, error) {
|
||||
func SaveFile(c *gin.Context, file *multipart.FileHeader, uploadType string) (string, string, error) {
|
||||
//获取文件后缀
|
||||
fileSuffix := path.Ext(file.Filename)
|
||||
//生成文件名
|
||||
|
|
@ -35,23 +35,10 @@ func SaveFile(file *multipart.FileHeader, uploadType string) (string, string, er
|
|||
path_ := getFilePath(proto.FILE_BASE_DIR)
|
||||
filePath := path_ + "/" + fileStoreName
|
||||
|
||||
//保存文件file
|
||||
dst, err := os.Create(filePath)
|
||||
if err != nil {
|
||||
//保存文件
|
||||
if err := c.SaveUploadedFile(file, filePath); err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
defer dst.Close()
|
||||
|
||||
// 复制文件内容
|
||||
file_, err := file.Open()
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
_, err = io.Copy(dst, file_)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
if uploadType == "2" {
|
||||
worker.PushRedisList("video_need_handle", filePath)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue