1, read a single file
func extractFace(w http.ResponseWriter, req *http.Request) { crossdomain(w, req) //parse json //body, err := ioutil.ReadAll(req.Body) // if err != nil { // log.Error("in streamsTrans read body error:%s" + err.Error()) // //respond2client(NOK_READ_REQ, "read http req body failed", w) // return // } //out := ConvertToString(string(body), "GB2312", "UTF-8") //log.Debug("body:%s", body) //log.Debug("out:%s", out) fmt.Println("method:", req.Method) //The method of getting the request if req.Method != "POST" { //should be log.Warn("wrong method") return } else { req.ParseMultipartForm (128 << 20) file, handler, err := req.FormFile("uploadfile") if err != nil { fmt.Println(err) return } defer file.Close() fmt.Fprintf(w, "%v", handler.Header) f, err := os.OpenFile("./test/"+handler.Filename, os.O_WRONLY|os.O_CREATE, 0666) if err != nil { fmt.Println(err) return } defer f.Close() io.Copy(f, file) /////////////////////////////// } }
2. Read batch files
fhs := req.MultipartForm.File["uploadfile"] optionDirs := make([]string, 0) log.Debug("fhs:%d", len(fhs)) for i := 0; i < len(fhs); i++ { file, err := fhs[i].Open() if err != nil { log.Error("open file with error: %s", err.Error()) panic(err) } filename := fhs[i].Filename //fileheader := fhs[i].Header log.Debug("filename %s", filename) f, err := os.OpenFile("./test/"+filename, os.O_WRONLY|os.O_CREATE, 0666) if err != nil { log.Error("open with error: %s", err.Error()) panic(err) } defer f.Close() io.Copy(f, file) optionDirs = append(optionDirs, filename) } log.Debug("optionDirs: %#v", optionDirs)