示例如下:

package mainimport ("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)}
}

源码解释

  1. os.Args[0]获取的是执行程序时的第一个参数,默认第一个参数是程序所在的目录
  2. filepath.Abs(filepath.Dir(os.Args[0]))是获取当前可执行程序所在的绝对路径
  3. http.Handle("/", http.FileServer(http.Dir(p)))是开启一个文件服务器,使用当前可执行文件所在的路径
  4. 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 文件服务器 实现相关推荐

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

    一.方法1: 主要用到的方法是http包的FileServer,参数很简单,就是要路由的文件夹的路径. package main import ( "fmt" "net/ ...

  2. go 文件服务器 搜索,golang文件服务器,可以访问任何目录

    一.方法1: 主要用到的方法是http包的fileserver,参数很简单,就是要路由的文件夹的路径. package main import ( "fmt" "net/ ...

  3. ext js如何动态更改xtype_K8S ConfigMap 用于动态应用程序的实践

    编辑:小君君 技术校对:星空下的文仔.bot 在 Kubernetes 中,ConfigMap 是允许管理员将配置组件与镜像内容解耦,使容器化应用程序产生可移植性的一种资源.ConfigMap 可以与 ...

  4. Go实战--golang实现MP4视频文件服务器(nareix/joy4)

    实现一个提供mp4视频文件的服务器吧,并且通过浏览器访问播放. MP4文件服务器 package mainimport ("log""net/http"&quo ...

  5. Go实战--golang实现MP4视频文件服务器 nareix/joy4

    生命不止,继续 go go go !!! 有点忙,有点懈怠,继续. 关于golang实现的静态文件服务器之前有写过: Go实战–golang实现静态文件服务器(文件查看,文件上传,文件下载) 正好,最 ...

  6. go开源文件服务器框架,golang微服务框架go-zero系列-4:go-zero文件服务

    golang微服务框架go-zero系列-4:go-zero文件服务 go-zero本身支持文件服务,但是我们需要写相关的handler文件,本文目的在于 不写任何一个和文件相关的handler 如果 ...

  7. golang 搭建文件服务器,golang实现简单文件服务器

    用golang作一个简单的文件服务器,http包提供了很好的支持,因为时间紧促,只看了http包中本身须要的一小部分,建议你们若是须要仍是去看官网的文档,搜索引擎搜索出来的前几个方法不是很符合需求.g ...

  8. go语言服务器实战,Go实战--golang实现MP4视频文件服务器(nareix/joy4)

    生命不止,继续 go go go !!! 有点忙,有点懈怠,继续. 关于golang实现的静态文件服务器之前有写过: Go实战–golang实现静态文件服务器(文件查看,文件上传,文件下载) 正好,最 ...

  9. golang实现文件服务器,【Golang】实现文件服务器断点续传

    Loading... # 0x00 下载文件时暂停后可以继续接着下载,在线看视频时可以随意拖动进度条,这些都是断点续传所实现的应用. http1.1支持**Range**属性从而实现断点续传,客户端在 ...

最新文章

  1. 【算法设计与数据结构】为何程序员喜欢将INF设置为0x3f3f3f3f?(转)
  2. linux输入qsub显示错误,linux – 使用qsub运行shellscript的’意外的文件结束’和’错误导入功能定义’错误...
  3. [Ceoi2010]Pin
  4. 区块链学者Michael Goldstein:比特币可以防止能源浪费
  5. 5分钟了解MySQL5.7的Online DDL雷区
  6. 简单介绍,基于ldirectord的高可用lvs-dr调度器
  7. 【优化算法】粒子群的混沌混合蝴蝶优化算法【含Matlab源码 047期】
  8. 查看计算机安装程序版本,Product Key Explorer(程序密钥显示工具)
  9. 基于单片机的人体健康检测系统
  10. burp抓取APP数据包+安装Xposed+Just TrustMe
  11. ​常见的8个概率分布公式和可视化
  12. 张朝阳开课手推E=mc²,李永乐现场狂做笔记!CEO当太久都忘了他是MIT物理博士...
  13. Ubuntu交叉编译工具链安装
  14. 有缘-无缘-惜缘-随缘
  15. STM32——舵机驱动
  16. 直播终端技术比较:Native vs H5 vs WebRTC vs 小程序
  17. Oracle之字符串去重统计
  18. NestJS学习笔记
  19. 【调剂】澳门科技大学空间大数据硕士接收调剂研究生
  20. debian 10 安装apache,apache配置

热门文章

  1. Linux_Samba详解
  2. 关于--Error: User Command terminated, Exit-Code = 1解决办法
  3. NR 5G NG-AP(NG接口)介绍
  4. 美团全链路压测自动化实践
  5. centos7 网络服务(二)Unbound实现dns高速缓存
  6. 关于matlab中的梯度使用
  7. [Android]关于Root
  8. 按照重复的次数高到低进行排序
  9. Unix Domain Socket 域套接字实现
  10. 【cocos2d-x从c++到js】02:解决在vs中修改js源文件无效