Golang单文件上传POST方式接收封装版
// 上传文件 func GetUpload(w http.ResponseWriter, r *http.Request) { type Return struct { Msg string `json:"msg"` //提示内容 Code int `json:"code"` //正确值=0 错误值400/500 Info interface{} `json:"info"` } var Ret Return HTTPS := "http://www.baidu.com" //默认域名 //================================================以下固定 blok := r.PostFormValue("blok") // form-json 方式 if blok == "" { blok = "upload" } year := strconv.Itoa(time.Now().Year()) Month := strconv.Itoa(int(time.Now().Month())) uinx := strconv.FormatInt(time.Now().UnixMicro(), 10) r.ParseMultipartForm(8 << 20) //设置内存大小 file, handler, err := r.FormFile("file") //获取上传文件 if err != nil { fmt.Println("获取上传文件异常", err) Ret.Msg = err.Error() Ret.Code = 500 msg, _ := json.Marshal(Ret) w.Write(msg) return } defer file.Close() os.MkdirAll("./file/"+blok+"/"+year+"/"+Month+"/", os.ModePerm) //创建上传目录 suffix := path.Ext(handler.Filename) //获取文件后缀 f, err := os.Create("./file/" + blok + "/" + year + "/" + Month + "/" + uinx + suffix) //创建上传文件 if err != nil { fmt.Println("创建上传文件异常", err) Ret.Msg = err.Error() Ret.Code = 400 msg, _ := json.Marshal(Ret) w.Write(msg) return } defer f.Close() if f.Name() != "" { io.Copy(f, file) } url := strings.Replace(f.Name(), "./file/", "/file/", -1) Ret.Msg = "上传成功" Ret.Info = HTTPS + url msg, _ := json.Marshal(Ret) w.Write(msg) }
463 Views