GO启动一个视频下载接口 前端可以边下边放
1.main.go 代码
package mainimport ("encoding/json""fmt""log""net/http""os""time"
)
type Response struct {Status stringMessage stringData string
}func main() {// 设置路由http.HandleFunc("/", homeHandler)http.HandleFunc("/api/video/", videoHandler)// 启动服务器port := ":8080"fmt.Printf("🚀 服务器运行中,访问地址: http://localhost%s\n", port)fmt.Println("=========================================")err := http.ListenAndServe(port, nil)if err != nil {log.Fatalf("❌ 启动服务器失败: %v", err)}
}// 主页处理器
func homeHandler(w http.ResponseWriter, r *http.Request) {if r.URL.Path != "/" {http.NotFound(w, r)return}response := Response{Status: "success",Message: "欢迎使用用户API服务",Data: "请访问 /api/users 获取用户数据",}sendJSON(w, http.StatusOK, response)
}// 获取视频
func videoHandler(w http.ResponseWriter, r *http.Request) {const videoDir = "./videos/"// 提取视频文件名path := r.URL.Path[len("/api/video/"):]if path == "" {http.Error(w, "Missing video filename", http.StatusBadRequest)return}filePath := videoDir + path_, err := os.Stat(filePath)if os.IsNotExist(err) {http.Error(w, "Video not found", http.StatusNotFound)return}if err != nil {log.Printf("Error getting file info: %v", err)http.Error(w, "Internal Server Error", http.StatusInternalServerError)return}// 设置响应头w.Header().Set("Content-Type", "video/mp4")w.Header().Set("Access-Control-Allow-Origin", "*") // 允许所有来源跨域访问w.Header().Set("Cache-Control", "max-age=3600, public")w.Header().Set("Accept-Ranges", "bytes")http.ServeFile(w, r, filePath)
}// 发送JSON响应
func sendJSON(w http.ResponseWriter, statusCode int, data interface{}) {w.Header().Set("Content-Type", "application/json")w.WriteHeader(statusCode)if err := json.NewEncoder(w).Encode(data); err != nil {log.Printf("❌ JSON编码失败: %v", err)http.Error(w, "Internal Server Error", http.StatusInternalServerError)}
}
1.1在main.go同级建一个videos文件夹放一个 tem1.mp4
2.前端代码
这里简单使用html
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Document</title>
</head>
<body>
<video controls><source src="http://localhost:8080/api/video/tem1.mp4" type="video/mp4">您的浏览器不支持视频播放。
</video></body>
</html>
3.启动go服务
4.使用浏览器打开html
视频可以正常播放
可以跳转进度条
暂停等操作