文件上传与下载 === ***** 上传文件 ``` func uploadHandler(w http.ResponseWriter,r *http.Request,p httprouter.Params) { //限制文件大小 r.Body = http.MaxBytesReader(w,r.Body,defs.MAX_UPLOAD_SIZE) //这个是解析,顺便设置表单最大大小 if err := r.ParseMultipartForm(defs.MAX_UPLOAD_SIZE);err != nil{ response.SendErrorResponse(w,defs.ErrorRequestBodyParseFailed) return } file,_, e := r.FormFile("file") if e != nil { response.SendErrorResponse(w,defs.ErrorRequestBodyParseFailed) return } bytes, _ := ioutil.ReadAll(file) //读文件 s, _ := utils.NewUUIDSimplicity() e = ioutil.WriteFile((defs.FILE_DIR + s), bytes, 0666) if e != nil { response.SendErrorResponse(w,defs.ErrorRequestBodyParseFailed) return } } ``` 下载文件 ``` func downloadHandler(w http.ResponseWriter,r *http.Request,p httprouter.Params) { vid :=p.ByName("vid-id") vl := defs.FILE_DIR + vid file, e := os.Open(vl) if e != nil{ response.SendErrorResponse(w,defs.ErrorRequestBodyParseFailed) return } //w.Header().Set("Content-Type","") http.ServeContent(w,r,"",time.Now(),file) defer file.Close() } ``` 课程代码 [https://github.com/dollarkillerx/GolangWebCourseware/tree/%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6](https://github.com/dollarkillerx/GolangWebCourseware/tree/%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6)