1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- // 文件上传服务器,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)
- }
- }
|