Procházet zdrojové kódy

文件下载&状态筛选

zhangqian před 2 roky
rodič
revize
c40d07e760
2 změnil soubory, kde provedl 29 přidání a 10 odebrání
  1. 23 4
      controllers/audio.go
  2. 6 6
      request/audio.go

+ 23 - 4
controllers/audio.go

@@ -2,8 +2,10 @@ package controllers
 
 import (
 	"errors"
+	"fmt"
 	"github.com/gin-gonic/gin"
 	"gorm.io/gorm"
+	"io"
 	"os"
 	"path"
 	"speechAnalysis/constvar"
@@ -268,10 +270,27 @@ func (slf AudioCtl) AudioDownload(c *gin.Context) {
 		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

+ 6 - 6
request/audio.go

@@ -7,15 +7,15 @@ import (
 
 type GetAudioList struct {
 	PageInfo
-	Keyword          string                 `form:"keyword"`                                                                            // 关键字
+	Keyword          string                 `form:"keyword"`                                                                         // 关键字
 	LocomotiveNumber string                 `gorm:"index;type:varchar(255);not null;default:'';comment:机车号" form:"locomotiveNumber"` // 机车号
-	TrainNumber      string                 `gorm:"index;type:varchar(255);not null;default:'';comment:车次" form:"trainNumber"`        // 车次
+	TrainNumber      string                 `gorm:"index;type:varchar(255);not null;default:'';comment:车次" form:"trainNumber"`       // 车次
 	DriverNumber     string                 `gorm:"index;type:varchar(255);not null;default:'';comment:司机号" form:"driverNumber"`     // 司机号
 	StationNumber    string                 `gorm:"index;type:varchar(255);not null;default:'';comment:车站号" form:"stationNumber"`    // 车站号
-	BeginTime        time.Time              `form:"beginTime"`                                                                          //开始时间
-	EndTime          time.Time              `form:"endTime"`                                                                            //结束时间
-	IsFollowed       constvar.BoolType      `form:"isFollowed"`                                                                         //是否关注 1关注 2未关注
-	StatusList       []constvar.AudioStatus `form:"statusList"`                                                                         //音频状态数组
+	BeginTime        time.Time              `form:"beginTime"`                                                                       //开始时间
+	EndTime          time.Time              `form:"endTime"`                                                                         //结束时间
+	IsFollowed       constvar.BoolType      `form:"isFollowed"`                                                                      //是否关注 1关注 2未关注
+	StatusList       []constvar.AudioStatus `form:"statusList"`                                                                      //音频状态数组
 }
 
 type ProcessAudio struct {