Commit 2012290c authored by Yasuhiro Matsumoto's avatar Yasuhiro Matsumoto Committed by Russ Cox

http: fix Content-Type of file extension.

ServeFile() pass empty string to serveFile(). serveFile() should get
file extension via joining root and filename.

R=bradfitz, rsc
CC=golang-dev
https://golang.org/cl/4654089
parent 35050455
...@@ -222,7 +222,8 @@ func serveFile(w ResponseWriter, r *Request, fs FileSystem, name string, redirec ...@@ -222,7 +222,8 @@ func serveFile(w ResponseWriter, r *Request, fs FileSystem, name string, redirec
// ServeFile replies to the request with the contents of the named file or directory. // ServeFile replies to the request with the contents of the named file or directory.
func ServeFile(w ResponseWriter, r *Request, name string) { func ServeFile(w ResponseWriter, r *Request, name string) {
serveFile(w, r, Dir(name), "", false) dir, file := filepath.Split(name)
serveFile(w, r, Dir(dir), file, false)
} }
type fileHandler struct { type fileHandler struct {
......
...@@ -175,6 +175,21 @@ func TestServeFileContentType(t *testing.T) { ...@@ -175,6 +175,21 @@ func TestServeFileContentType(t *testing.T) {
get(ctype) get(ctype)
} }
func TestServeFileMimeType(t *testing.T) {
ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
ServeFile(w, r, "testdata/style.css")
}))
defer ts.Close()
resp, err := Get(ts.URL)
if err != nil {
t.Fatal(err)
}
want := "text/css"
if h := resp.Header.Get("Content-Type"); h != want {
t.Errorf("Content-Type mismatch: got %q, want %q", h, want)
}
}
func TestServeFileWithContentEncoding(t *testing.T) { func TestServeFileWithContentEncoding(t *testing.T) {
ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) { ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
w.Header().Set("Content-Encoding", "foo") w.Header().Set("Content-Encoding", "foo")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment