golang实现http服务器处理静态文件示例
发布时间:2020-12-16 19:30:52 所属栏目:大数据 来源:网络整理
导读:本篇章节讲解golang实现http服务器处理静态文件的方法。供大家参考研究具体如下: 新版本更精简: 复制代码 代码如下: package main import ( "flag" "log" "net/http" "os" "io" "path" "strconv" ) var dir string var port int var staticHandle
本篇章节讲解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,"服务器端口") flag.Parse() indexs = []string{"index.html","index.htm"} } func main() { http.HandleFunc("/",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,file+index) return } http.NotFound(w,req) return } http.ServeFile(w,file) } 希望本文所述对大家Go语言程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |