编程 文件处理 服务器,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,"服务器端口")

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语言程序设计有所帮助。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值