首页 > 学院 > 开发设计 > 正文

Golang1.8标准库http.Fileserver跟http.ServerFile小例子

2019-11-06 06:54:00
字体:
来源:转载
供稿:网友
package mainimport ( "fmt" "net/http" "os" "path" "strings")var staticfs = http.FileServer(http.Dir("D://code//20160902//src//"))func main() { //浏览器打开的时候显示的就是D://code//20160902//src//client目录下的内容" http.Handle("/client/", http.FileServer(http.Dir("D://code//20160902//src//"))) http.HandleFunc("/static/", static) http.HandleFunc("/js/", js) http.HandleFunc("/", route) http.ListenAndServe(":1789", nil)}func route(w http.ResponseWriter, r *http.Request) { fmt.PRintln(r.URL) fmt.Fprintln(w, "welcome") r.Body.Close()}//这里可以自行定义安全策略func static(w http.ResponseWriter, r *http.Request) { fmt.Printf("访问静态文件:%s/n", r.URL.Path) old := r.URL.Path r.URL.Path = strings.Replace(old, "/static", "/client", 1) staticfs.ServeHTTP(w, r)}//设置单文件访问,不能访问目录func js(w http.ResponseWriter, r *http.Request) { fmt.Printf("不能访问目录:%s/n", r.URL.Path) old := r.URL.Path name := path.Clean("D:/code/20160902/src" + strings.Replace(old, "/js", "/client", 1)) info, err := os.Lstat(name) if err == nil { if !info.IsDir() { http.ServeFile(w, r, name) } else { http.NotFound(w, r) } } else { http.NotFound(w, r) }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表