使用Golang快速的创建一个文件服务器

同事满大街找U盘,需要从另一个同事那拷贝一个大文件。找不着,尝试用windows的共享文件夹,整半天也不灵。我用几分钟用Go写了一个文件服务器。直接把编译后的二进制文件发给同事。在文件所在目录运行它,其他人就可以通过浏览器直接访问下载了。

package main

import (
	"context"
	"log"
	"net/http"
	"os"
	"os/signal"
)

func init() {
	log.Default().SetOutput(os.Stdout)
	log.Default().SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
}

func main() {
	pwd, err := os.Getwd()
	if err != nil {
		log.Fatalf("err: %s\n", err.Error())
	}
	server := http.Server{
		Addr:    ":1024",
		Handler: http.FileServer(http.Dir(pwd)),
	}

	go func() {
		if err := server.ListenAndServe(); err != nil {
			log.Fatalf("err: %s\n", err.Error())
		}
	}()

	ctx, cancel := signal.NotifyContext(context.Background(), os.Kill, os.Interrupt)
	defer cancel()
	select {
	case <-ctx.Done():
		log.Println("Exit")
		return
	}
}

Go是真舒服,几行代码就可以构建一个生产级别的HTTP服务。而且还可以直接编译成本地可执行文件。

1 Like

太棒了又学到许多 :kissing_heart:

1 Like

鹏哥越来越6了