parent
d90ef4c1a5
commit
0002243ffd
|
|
@ -1,5 +1,4 @@
|
|||
*.key
|
||||
simpleserve
|
||||
*.crt
|
||||
*.pem
|
||||
*.swp
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
package simpleserve
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"path"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func SetContentTypeIfMedia(w http.ResponseWriter, r *http.Request) {
|
||||
ext := strings.ToLower(path.Ext(r.URL.Path))
|
||||
if i := strings.LastIndex(ext, "."); i != -1 {
|
||||
ext = ext[i:]
|
||||
}
|
||||
k := "Content-Type"
|
||||
v := ""
|
||||
switch ext {
|
||||
case ".mp4":
|
||||
v = "video/mp4"
|
||||
case ".mkv":
|
||||
v = "video/x-matroska"
|
||||
case ".mp3":
|
||||
v = "audio/mpeg3"
|
||||
case ".epub", ".mobi":
|
||||
k = "Content-Disposition"
|
||||
v = "attachment"
|
||||
case ".jpg", ".jpeg":
|
||||
v = "image/jpeg"
|
||||
case ".md":
|
||||
v = "text/markdown"
|
||||
case ".gif":
|
||||
v = "image/gif"
|
||||
case ".png":
|
||||
v = "image/png"
|
||||
case ".ico":
|
||||
v = "image/x-icon"
|
||||
case ".svg":
|
||||
v = "image/svg+xml"
|
||||
case ".css":
|
||||
v = "text/css"
|
||||
case ".js":
|
||||
v = "text/javascript"
|
||||
case ".json":
|
||||
v = "application/json"
|
||||
case ".html", ".htm":
|
||||
v = "text/html"
|
||||
case ".pdf":
|
||||
w.Header().Set("Content-Disposition", fmt.Sprintf("inline; filename=%q", path.Base(r.URL.Path)))
|
||||
v = "application/pdf"
|
||||
case ".webm":
|
||||
v = "video/webm"
|
||||
case ".weba":
|
||||
v = "audio/webm"
|
||||
case ".webp":
|
||||
v = "image/webp"
|
||||
case ".zip":
|
||||
v = "application/zip"
|
||||
case ".7z":
|
||||
v = "application/x-7z-compressed"
|
||||
case ".tar":
|
||||
v = "application/x-tar"
|
||||
case ".m4b":
|
||||
v = "application/octet-stream"
|
||||
case ".xml", ".rss", ".feed", ".rdf":
|
||||
v = "application/rss+xml"
|
||||
default:
|
||||
return
|
||||
}
|
||||
w.Header().Set(k, v)
|
||||
}
|
||||
Loading…
Reference in New Issue