来源:自学PHP网 时间:2019-08-07 16:47 作者:小飞侠 阅读:次
[导读] golang实现http服务器处理静态文件示例...
本文实例讲述了golang实现http服务器处理静态文件的方法。分享给大家供大家参考,具体如下: 新版本更精简:
复制代码 代码如下:
package main
import ( "flag" "log" "net/http" "os" "io" "path" "strconv" ) var dir string var port int var staticHandler http.Handler // 初始化参数 func init() { dir = path.Dir(os.Args[0]) flag.IntVar(&port, "port", 80, "服务器端口") flag.Parse() staticHandler = http.FileServer(http.Dir(dir)) } func main() { http.HandleFunc("/", StaticServer) err := http.ListenAndServe(":"+strconv.Itoa(port), nil) if err != nil { log.Fatal("ListenAndServe: ", err) } } // 静态文件处理 func StaticServer(w http.ResponseWriter, req *http.Request) { if req.URL.Path != "/" { staticHandler.ServeHTTP(w, req) return } io.WriteString(w, "hello, world!\n") } 老版本:
复制代码 代码如下:
package main
import ( "flag" "log" "net/http" "os" "path" "strconv" ) var dir string var port int var indexs []string // 初始化参数 func init() { dir = path.Dir(os.Args[0]) flag.IntVar(&port, "port", 80, "服务器端口") flag.Parse() indexs = []string{"index.html", "index.htm"} } func main() { http.HandleFunc("/", StaticServer) err := http.ListenAndServe(":"+strconv.Itoa(port), nil) if err != nil { log.Fatal("ListenAndServe: ", err) } } // 静态文件处理 func StaticServer(w http.ResponseWriter, req *http.Request) { file := dir + req.URL.Path fi, err := os.Stat(file) if os.IsNotExist(err) { http.NotFound(w, req) return } if err != nil { http.Error(w, err.Error(), 500) return } if fi.IsDir() { if req.URL.Path[len(req.URL.Path)-1] != '/' { http.Redirect(w, req, req.URL.Path+"/", 301) return } for _, index := range indexs { fi, err = os.Stat(file + index) if err != nil { continue } http.ServeFile(w, req, file+index) return } http.NotFound(w, req) return } http.ServeFile(w, req, file) } 希望本文所述对大家Go语言程序设计有所帮助。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com