静态文件下载服务go语言版

重要更新见最下头!!!

前言

之前写过python版的高性能静态文件下载服务,直接运行访问端口就可以下载服务器上的静态文件。但是代码是python写的,部署起来真的是太难了,尤其是依赖问题,使用go语言有天生的部署优势。

代码

static_file_server.go

package main

import (
	"flag"
	"fmt"
	"net/http"
	"path/filepath"
)

var (
	port int
	dir  string
)

func main() {
	flag.IntVar(&port, "p", 8888, "开放端口")
	flag.StringVar(&dir, "d", ".", "静态文件目录")
	flag.Parse()
	addr := fmt.Sprintf("0.0.0.0:%d", port)
	dir, err := filepath.Abs(dir)
	if err != nil {
		panic("文件路径不正确")
	}
	fmt.Printf("开启文件下载服务 %s at %s\n", dir, addr)
	err = http.ListenAndServe(addr, http.FileServer(http.Dir(dir)))
	if err != nil {
		panic(err)
	}
}

2021.09.26更新!!!

我用go实现的比较简陋,现在已经有了更好的实现,是用rust实现的,性能更好,包又小,功能还更全。强烈推荐:

svenstaro/miniserve: 🌟 For when you really just want to serve some files over HTTP right now! (github.com)

次博客仍然保留,仅做学习交流使用,实际使用更推荐miniserve