• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    golang文件服务器的两种方式(可以访问任何目录)

    一、方法1:

    主要用到的方法是http包的FileServer,参数很简单,就是要路由的文件夹的路径。

    package main
    
    import (
      "fmt"
      "net/http"
    )
    
    func main() {
      http.Handle("/", http.FileServer(http.Dir("./")))
    
      e := http.ListenAndServe(":8080", nil)
      fmt.Println(e)
    }

    上面例子的路由只能把根目录也就是“/”目录映射出来,例如你写成”http.Handle("/files", http.FileServer(http.Dir("./")))“,就无法把通过访问”/files“把当前路径下的文件映射出来。于是就有了http包的StripPrefix方法。

    二、方法2:

    实现访问任意文件夹下面的文件。

    package main
    
    import (
      "fmt"
      "net/http"
    )
    
    func main() {
      mux := http.NewServeMux()
      mux.Handle("/", http.StripPrefix("/", http.FileServer(http.Dir("/"))))
      mux.Handle("/c/", http.StripPrefix("/c/", http.FileServer(http.Dir("c:"))))
      mux.Handle("/d/", http.StripPrefix("/d/", http.FileServer(http.Dir("d:"))))
      mux.Handle("/e/", http.StripPrefix("/e/", http.FileServer(http.Dir("e:"))))
      if err := http.ListenAndServe(":3008", mux); err != nil {
        log.Fatal(err)
      }
    }

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

    ps:golang实现的文件服务器

    最近在学习golang,使用golang实现了一个最简单的文件服务器,程序只有简单的十多行代码,可以编译成windows, linux, mac多平台可执行文件。

    源码

    package main
    
    import (
     "fmt"
     "net/http"
     "os"
     "path/filepath"
    )
    
    func main() {
     p, _ := filepath.Abs(filepath.Dir(os.Args[0]))
     http.Handle("/", http.FileServer(http.Dir(p)))
     err := http.ListenAndServe(":8088", nil)
     if err != nil {
     fmt.Println(err)
     }
    }

    源码解释

    os.Args[0]获取的是执行程序时的第一个参数,默认第一个参数是程序所在的目录
    filepath.Abs(filepath.Dir(os.Args[0]))是获取当前可执行程序所在的绝对路径
    http.Handle("/", http.FileServer(http.Dir(p)))是开启一个文件服务器,使用当前可执行文件所在的路径
    http.ListenAndServe(":8088", nil)是监听8088端口并开启文件服务器

    编译

    要将源码编译成不同平台的可执行文件,需要使用gox工具,使用下面的命令安装gox:

    go get github.com/mitchellh/gox

    执行成功之后,使用gox命令即可自动编译出各个平台的可执行文件,如果想为某个平台单独编译,可以使用如下方式:

    gox -os "windows linux" -arch amd64

    -os参数指定了编译平台,-arch参数指定了处理器架构

    运行

    直接打开编译出来的可执行程序,即可运行,在浏览器中访问http://ip:8088即可看到可执行文件所在的目录下的所有文件。

    到此这篇关于golang文件服务器可以访问任何目录的文章就介绍到这了,更多相关golang文件服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • golang DNS服务器的简单实现操作
    • golang-gin-mgo高并发服务器搭建教程
    • golang HTTP 服务器 处理 日志/Stream流的操作
    • golang项目如何上线部署到Linu服务器(方法详解)
    • golang搭建静态web服务器的实现方法
    • 详解如何热重启golang服务器
    • 浅谈Golang中创建一个简单的服务器的方法
    • 基于 HLS 创建 Golang 视频流服务器的优缺点
    上一篇:如何在 ubuntu linux 上配置 go 语言的 qt 开发环境
    下一篇:Golang中使用Date进行日期格式化(沿用Java风格)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    golang文件服务器的两种方式(可以访问任何目录) golang,文件,服务器,的,两种,