栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

golang web 文件服务器 WFS

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

golang web 文件服务器 WFS

golang 使用标准库 30行代码实现 web 文件托管服务器

WFS(Web File Server) 是一个可以通过浏览器浏览本地托管目录的在线文件服务器。

使用自定义的 ResponseBodyWriter 结构在 Write 函数中重写 http.ResponseWriter 响应内容。

运行程序,访问 http://127.0.0.1:8080/ 即可访问 exe 根目录内容。

package main

import (
	"bytes"
	"log"
	"net/http"
	"os"
	"path/filepath"
)

func codeStarts() string {
	return `


    Title
    
    
    
    
    



	
FileServer - 驭鲸环球
    ` } func codeEnd() string { return `
` } type ResponseBodyWriter struct { http.ResponseWriter body *bytes.Buffer } func (r ResponseBodyWriter) Write(b []byte) (int, error) { if bytes.Equal(b, []byte{60, 112, 114, 101, 62, 10} ) { return r.ResponseWriter.Write([]byte(codeStarts())) } else if bytes.Equal(b, []byte{60, 47, 112, 114, 101, 62, 10} ) { return r.ResponseWriter.Write([]byte(codeEnd())) } else if bytes.HasPrefix(b, []byte("")) { s := append([]byte("
  • "), b...) s = append(s, []byte("
  • ")...) //r.body.Write(s) return r.ResponseWriter.Write(s) } return r.ResponseWriter.Write(b) } func middleware(next http.Handler) http.Handler { return http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { w := &ResponseBodyWriter{ResponseWriter: writer, body: &bytes.Buffer{}} writer = w next.ServeHTTP(writer, request) }) } func main() { path, _ := filepath.Abs(filepath.Dir(os.Args[0])) //设置wfs根目录 //path = "D:/Games/Naraka" fileHandler := http.FileServer(http.Dir(path)) http.Handle("/", middleware(fileHandler)) err := http.ListenAndServe(":8080", nil) if err != nil { log.Println(err) } }
    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/905448.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号