Compare commits
2 Commits
2b11a58a2d
...
bdd4d8dc32
| Author | SHA1 | Date |
|---|---|---|
|
|
bdd4d8dc32 | |
|
|
5228a4270e |
|
|
@ -1,8 +1,11 @@
|
|||
package handler
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"strconv"
|
||||
"videoplayer/dao"
|
||||
"videoplayer/proto"
|
||||
|
|
@ -75,13 +78,35 @@ func DownloadFile(c *gin.Context) {
|
|||
id, _ := c.Get("id")
|
||||
//查询文件信息
|
||||
//file := dao.FindFileByNames(file_id, int(id.(float64)))
|
||||
file := dao.FindFileByID(file_id, int(id.(float64)))
|
||||
if file.ID == 0 {
|
||||
file_ := dao.FindFileByID(file_id, int(id.(float64)))
|
||||
if file_.ID == 0 {
|
||||
c.JSON(http.StatusOK, gin.H{"error": "file not found", "code": proto.FileNotFound, "message": "failed"})
|
||||
return
|
||||
}
|
||||
//下载文件
|
||||
c.File(file.FilePath + file.FileStoreName)
|
||||
// 打开文件
|
||||
file, err := os.Open(file_.FilePath + "/" + file_.FileStoreName)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Internal Server Error", "message": "Failed to open file"})
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
// 设置响应头
|
||||
c.Writer.Header().Set("Content-Description", "File Transfer")
|
||||
c.Writer.Header().Set("Content-Transfer-Encoding", "binary")
|
||||
c.Writer.Header().Set("Expires", "0")
|
||||
c.Writer.Header().Set("Cache-Control", "must-revalidate")
|
||||
c.Writer.Header().Set("Pragma", "public")
|
||||
c.Writer.Header().Set("Content-Type", "application/octet-stream")
|
||||
c.Writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=\"%s\"", file_.FileName))
|
||||
|
||||
// 发送文件内容
|
||||
_, err = io.Copy(c.Writer, file)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Internal Server Error", "message": "Failed to send file"})
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func SetRedis(c *gin.Context) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue