Add support filename query param for mp4 files

This commit is contained in:
Alexey Khit
2023-05-25 06:47:51 +03:00
parent 59555cfe1d
commit bff9b06d5d
+16 -5
View File
@@ -38,7 +38,8 @@ func handlerKeyframe(w http.ResponseWriter, r *http.Request) {
}
}
src := r.URL.Query().Get("src")
query := r.URL.Query()
src := query.Get("src")
stream := streams.GetOrNew(src)
if stream == nil {
http.Error(w, api.StreamNotFound, http.StatusNotFound)
@@ -69,8 +70,13 @@ func handlerKeyframe(w http.ResponseWriter, r *http.Request) {
stream.RemoveConsumer(cons)
// Apple Safari won't show frame without length
w.Header().Set("Content-Length", strconv.Itoa(len(data)))
w.Header().Set("Content-Type", cons.MimeType)
header := w.Header()
header.Set("Content-Length", strconv.Itoa(len(data)))
header.Set("Content-Type", cons.MimeType)
if filename := query.Get("filename"); filename != "" {
header.Set("Content-Disposition", `attachment; filename="`+filename+`"`)
}
if _, err := w.Write(data); err != nil {
log.Error().Err(err).Caller().Send()
@@ -132,8 +138,6 @@ func handlerMP4(w http.ResponseWriter, r *http.Request) {
defer stream.RemoveConsumer(cons)
w.Header().Set("Content-Type", cons.MimeType())
data, err := cons.Init()
if err != nil {
log.Error().Err(err).Caller().Send()
@@ -141,6 +145,13 @@ func handlerMP4(w http.ResponseWriter, r *http.Request) {
return
}
header := w.Header()
header.Set("Content-Type", cons.MimeType())
if filename := query.Get("filename"); filename != "" {
header.Set("Content-Disposition", `attachment; filename="`+filename+`"`)
}
if _, err = w.Write(data); err != nil {
log.Error().Err(err).Caller().Send()
http.Error(w, err.Error(), http.StatusInternalServerError)