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") }