// 文件上传服务器,json格式操作 package main import ( "flag" "fmt" "io" "log" "net/http" "os" "path/filepath" ) var ( path = flag.String("path", "./", "路径") addr = flag.String("addr", ":20008", "地址") ) func init() { flag.Parse() } // uploadFileHandler func uploadFileHandler(w http.ResponseWriter, r *http.Request) { log.Println("请求过来了") // 设置CORS头部,允许所有源(*)进行所有方法的请求 w.Header().Set("Access-Control-Allow-Origin", "*") w.Header().Set("Content-Type", "application/json") // 检查是否是POST请求 if r.Method != "POST" { http.Error(w, "只接受POST请求", http.StatusBadRequest) return } // 解析上传的文件 file, _, err := r.FormFile("file") if err != nil { http.Error(w, "解析文件失败", http.StatusBadRequest) return } defer file.Close() filename := r.FormValue("filename") fo, err := os.Create(filepath.Join(*path, filename)) if err != nil { http.Error(w, "创建文件"+filename+"失败", http.StatusBadRequest) return } defer fo.Close() io.Copy(fo, file) // 返回成功响应 fmt.Fprint(w, fmt.Sprintf(`{"code":200,"msg":"ok","filename":"%s"}`, filename)) } func main() { http.HandleFunc("/upload", uploadFileHandler) if err := http.ListenAndServeTLS(*addr, "./client.crt", "./client.key", nil); err != nil { log.Fatal(err) } }