敏哥gege的gravatar头像
敏哥gege 2017-12-10 13:07:12
golang实现简单文件服务器

用golang做一个简单的文件服务器,http包提供了很好的支持,由于时间紧促,只看了http包中自己需要的一小部分,建议大家如果需要还是去看官网的文档,搜索引擎搜索出来的前几个方法不是很符合需求.
主要用到的方法是http包的FileServer
第一个Demo: fileServer.go
package main

import (
    "fmt"
    "net/http"
)


func main() {
    http.Handle("/", http.FileServer(http.Dir("./")))

    e := http.ListenAndServe(":8080", nil)
    fmt.Println(e)
}

最后效果图

golang实现简单文件服务器golang实现简单文件服务器

如果想访问任意文件夹下面的文件的话可参考下面

上面直接使用了http.FileServer方法,参数很简单,就是要路由的文件夹的路径。但是这个例子的路由只能把根目录也就是“/”目录映射出来,没法更改成其他路由,例如你写成”http.Handle("/files", http.FileServer(http.Dir("./")))“,就无法把通过访问”/files“把当前路径下的文件映射出来。于是就有了http包的StripPrefix方法。

第二个Demo,加上了http包的StripPrefix方法:

package main

import (
    "fmt"
    "net/http"
)


func main() {
     mux := http.NewServeMux()
    mux.Handle("/files/", http.StripPrefix("/files/", http.FileServer(http.Dir("../files"))))
    if err := http.ListenAndServe(":3000", mux); err != nil {
        log.Fatal(err)
    }
}

 

这里生成了一个ServeMux,与文件服务器无关,可以先不用关注。用这种方式,就可以把任意文件夹下的文件路由出来了,哈哈


打赏

已有1人打赏

最代码官方的gravatar头像
最近浏览
meilisanya888  LV14 2019年4月28日
Luis虎子  LV16 2018年5月25日
wkc  LV21 2018年4月9日
biyuntian1k 2018年4月3日
暂无贡献等级
孟陆同学  LV7 2018年3月20日
GXUTLOVE  LV8 2018年3月2日
hulinjun  LV1 2018年1月30日
上世纪风景  LV11 2018年1月12日
JamesOne  LV2 2018年1月9日
zyl  LV34 2018年1月4日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友