package handler import ( "github.com/gin-gonic/gin" "net/http" "os" "time" "videoplayer/service" ) type gvlReq struct { StartTime string `json:"begin"` EndTime string `json:"end"` IP string `json:"ip"` Token string `json:"token"` } type videoReq struct { CameraID int `json:"camera_id"` VideoPath string `json:"video_path"` VideoName string `json:"video_name"` AuthId int `json:"auth_id"` Human int `json:"human"` IsDelete int `json:"is_delete"` CreateTime string `json:"create_time"` EndTime string `json:"end_time"` DeleteTime string `json:"delete_time"` FileSize int `json:"file_size"` } type videoPReq struct { ID int `json:"id"` Token string `json:"token"` AuthId string `json:"userId"` IP string `json:"ip"` } func SetUpVideoGroup(router *gin.Engine) { videoGroup := router.Group("/video") videoGroup.POST("/get_video_list", GetVideoList) videoGroup.POST("/create", CreateVideo) videoGroup.GET("/mp4", GetVideo) } func GetVideo(c *gin.Context) { var vp_req videoPReq if err := c.ShouldBindQuery(&vp_req); err == nil { video := service.GetVideo(vp_req.ID, c.GetInt("id")) name := video.VideoName path := video.VideoPath if video.IsDelete == 0 { // 打开文件 file, err := os.Open(path + name) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } defer file.Close() // 设置响应头 c.Header("Content-Type", "video/mp4") // 开始传输文件 http.ServeContent(c.Writer, c.Request, name, time.Now(), file) // 传输文件, 传输文件的内容类型, 文件名, 文件最后修改时间, 文件 // 返回文件 c.JSON(http.StatusOK, gin.H{"message": "success", "code": 200}) } else { c.JSON(http.StatusBadRequest, gin.H{"error": "video is deleted"}) } } else { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) } } func CreateVideo(c *gin.Context) { var video_req videoReq if err := c.ShouldBindJSON(&video_req); err == nil { } else { } } func GetVideoList(c *gin.Context) { var gvl_req gvlReq if err := c.ShouldBindJSON(&gvl_req); err == nil { videos := service.GetVideoList(c.GetInt("id")) c.JSON(http.StatusOK, gin.H{"videos": videos, "code": 0, "message": "success"}) } else { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "code": 1, "message": "failed"}) } }