File upload handler
ParseMultipartForm parses then r.FormFile pulls the file out. maxMemory bytes stay in RAM; bigger parts spill to temp files.
func upload(w http.ResponseWriter, r *http.Request) {
if err := r.ParseMultipartForm(10 << 20); err != nil { // 10 MiB in memory
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
file, header, _ := r.FormFile("file")
defer file.Close()
fmt.Println(header.Filename, header.Size)
io.Copy(os.Stdout, file)
}