package main import ( "fmt" "log" "net/http" "os" "path/filepath" ) const scriptsDir = "scripts" func main() { // 确保脚本目录存在 if _, err := os.Stat(scriptsDir); os.IsNotExist(err) { os.Mkdir(scriptsDir, os.ModePerm) } // 提供脚本下载 http.HandleFunc("/scripts/", func(w http.ResponseWriter, r *http.Request) { if r.Method == http.MethodGet { fileName := filepath.Base(r.URL.Path) filePath := filepath.Join(scriptsDir, fileName) // 检查文件是否存在 if _, err := os.Stat(filePath); os.IsNotExist(err) { http.Error(w, "脚本未找到", http.StatusNotFound) return } // 打开文件 file, err := os.Open(filePath) if err != nil { http.Error(w, "无法打开文件", http.StatusInternalServerError) return } defer file.Close() // 获取文件的修改时间 fileInfo, err := file.Stat() if err != nil { http.Error(w, "无法获取文件信息", http.StatusInternalServerError) return } // 提供文件下载 http.ServeContent(w, r, fileName, fileInfo.ModTime(), file) } else { http.Error(w, "不支持的方法", http.StatusMethodNotAllowed) } }) // 启动服务器 port := "18123" fmt.Printf("服务器已启动,监听端口: %s\n", port) log.Fatal(http.ListenAndServe(":"+port, nil)) }