|
@@ -5,7 +5,9 @@ import (
|
|
|
"log"
|
|
|
"net/http"
|
|
|
"net/url"
|
|
|
+ "os"
|
|
|
"path/filepath"
|
|
|
+ "strconv"
|
|
|
"strings"
|
|
|
|
|
|
"imuslab.com/arozos/mod/common"
|
|
@@ -142,16 +144,21 @@ func serverMedia(w http.ResponseWriter, r *http.Request) {
|
|
|
if downloadMode {
|
|
|
userAgent := r.Header.Get("User-Agent")
|
|
|
filename := strings.ReplaceAll(url.QueryEscape(filepath.Base(realFilepath)), "+", "%20")
|
|
|
- log.Println(r.Header.Get("User-Agent"))
|
|
|
+ //log.Println(r.Header.Get("User-Agent"))
|
|
|
|
|
|
if strings.Contains(userAgent, "Safari/") {
|
|
|
//This is Safari. Use speial header
|
|
|
w.Header().Set("Content-Disposition", "attachment; filename="+filepath.Base(realFilepath))
|
|
|
- w.Header().Set("Content-Type", r.Header.Get("Content-Type"))
|
|
|
} else {
|
|
|
//Fixing the header issue on Golang url encode lib problems
|
|
|
w.Header().Set("Content-Disposition", "attachment; filename*=UTF-8''"+filename)
|
|
|
- w.Header().Set("Content-Type", r.Header.Get("Content-Type"))
|
|
|
+ }
|
|
|
+ w.Header().Set("Content-Type", r.Header.Get("Content-Type"))
|
|
|
+
|
|
|
+ //Serve content length by trying to get filesize
|
|
|
+ fi, err := os.Stat(filepath.Clean(realFilepath))
|
|
|
+ if err == nil {
|
|
|
+ w.Header().Set("Content-Length", strconv.Itoa(int(fi.Size())))
|
|
|
}
|
|
|
}
|
|
|
|