zhangqian
2024-06-12 c40d07e760598c0aae4353f7a1e2d6b01747e83f
controllers/audio.go
@@ -2,8 +2,11 @@
import (
   "errors"
   "fmt"
   "github.com/gin-gonic/gin"
   "gorm.io/gorm"
   "io"
   "os"
   "path"
   "speechAnalysis/constvar"
   "speechAnalysis/extend/code"
@@ -181,6 +184,7 @@
      SetBeginTime(params.BeginTime).
      SetEndTime(params.EndTime).
      SetIsFollowed(params.IsFollowed).
      SetAudioStatusList(params.StatusList).
      Find()
   if err != nil {
@@ -266,10 +270,27 @@
      return
   }
   c.Header("Content-Description", "File Transfer")
   c.Header("Content-Disposition", "attachment; filename="+audio.Name)
   c.Header("Content-Type", "application/octet-stream")
   c.File(audio.FilePath)
   file, err := os.Open(audio.FilePath)
   if err != nil {
      util.ResponseFormat(c, code.InternalError, "文件打开失败")
      return
   }
   defer file.Close()
   fileInfo, err := file.Stat()
   if err != nil {
      util.ResponseFormat(c, code.InternalError, "获取文件信息失败")
      return
   }
   c.Header("Content-Disposition", "inline; filename="+audio.Name) // 在浏览器中直接打开
   c.Header("Content-Length", fmt.Sprint(fileInfo.Size()))
   c.Header("Content-Type", "audio/mpeg") // 设置音频文件类型
   if _, err := io.Copy(c.Writer, file); err != nil {
      util.ResponseFormat(c, code.InternalError, "文件传输失败")
      return
   }
}
// BatchProcess
@@ -339,6 +360,13 @@
      return
   }
   go func() {
      err = os.Remove(audio.FilePath)
      if err != nil {
         logx.Warnf("remove file err:%v, file:%v", err, audio.FilePath)
      }
   }()
   util.ResponseFormat(c, code.DeleteSuccess, "成功")
}
@@ -375,6 +403,15 @@
      return
   }
   go func() {
      for _, audio := range audioList {
         err = os.Remove(audio.FilePath)
         if err != nil {
            logx.Warnf("remove file err:%v, file:%v", err, audio.FilePath)
         }
      }
   }()
   util.ResponseFormat(c, code.DeleteSuccess, "成功")
}