Golang Static File Server
The example below uses gorilla/mux package

package main



import (

"fmt"

"log"

"net/http"

"github.com/gorilla/mux"

)



func YourHandler(w http.ResponseWriter, r *http.Request) {

fmt.Fprintf(w, "Gorilla!

")

}



func UnauthorizedHandler(w http.ResponseWriter, r *http.Request) {

w.WriteHeader(401)

fmt.Fprintf(w, "401 Unauthorized

")

}



func NotFoundHandler(w http.ResponseWriter, r *http.Request) {

w.WriteHeader(404)

fmt.Fprintf(w, "404 Not Found

")

}



func main() {

r := mux.NewRouter()

r.HandleFunc("/", YourHandler)

d := "/static/"

r.HandleFunc(d, UnauthorizedHandler) // prevent directory listing

r.HandleFunc(d+"{filename:[a-zA-Z0-9]+}.gif", NotFoundHandler) // black list file type

r.PathPrefix(d).Handler(http.StripPrefix(d, http.FileServer(http.Dir("."+d))))

log.Fatal(http.ListenAndServe(":8000", r))

}

Save the codes above into a file, lets call it “fileserver.go”. In the same location create a directory named “static”. Run it by

go run fileserver.go

Place some jpg, gif or txt files into “static” folder. Lets say you placed a file named “helloworld.txt”. To browse it

http://localhost:8000/static/helloworld.txt

< Back to all the stories I had written
['Kevin Foo']
['Static', 'File Server', 'Go', 'Golang']