| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 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))
- }
|