blog/internal/controller/cli_controller/file_controller.go

48 lines
1.1 KiB
Go

package cli_controller
import (
"Blog/internal/model/result"
"Blog/internal/service"
"net/http"
"net/url"
"strconv"
"strings"
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/mvc"
"github.com/kataras/iris/v12/sessions"
)
type FileController struct {
Ctx iris.Context
Session *sessions.Session
}
func (ctrl *FileController) Get() {
id := ctrl.Ctx.Params().Get("id")
index := strings.LastIndex(id, ".")
if index != -1 {
id = id[:index]
}
file, err := service.FileService.GetFile(id)
if err != nil || file.Id == "" {
ctrl.Ctx.JSON(result.Error("文件不存在"))
return
}
ctrl.Ctx.Header("Content-Disposition", "attachment;filename="+url.QueryEscape(file.FileName))
if file.FileSize != 0 {
ctrl.Ctx.Header("Content-Length", strconv.FormatInt(file.FileSize, 10))
}
ctrl.Ctx.Write(file.Data)
}
func (ctrl *FileController) BeforeActivation(activation mvc.BeforeActivation) {
// logrus.Info("before")
activation.Handle(http.MethodGet, "/{id}", "Get")
}
func (ctrl *FileController) AfterActivation(activation mvc.AfterActivation) {
// logrus.Info("after")
}