源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

golang实现http服务器处理静态文件示例

  • 时间:2022-04-20 10:37 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:golang实现http服务器处理静态文件示例
本文实例讲述了golang实现http服务器处理静态文件的方法。分享给大家供大家参考,具体如下: [b]新版本更精简: [/b]
[u]复制代码[/u] 代码如下:
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") }
[b]老版本: [/b]
[u]复制代码[/u] 代码如下:
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语言程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部