Golang實現Web文件上傳
// fileUpload project main.go package mainimport ( "fmt" "html/template" "io" "log" "net/http" "os" )
var buf []byte
func upload(w http.ResponseWriter, r *http.Request) { r.ParseForm() if r.Method == "GET" { t, err := template.ParseFiles("upload.gptl") checkErr(err) t.Execute(w, nil) } else { file, handle, err := r.FormFile("file") checkErr(err) f, err := os.OpenFile("./test/"+handle.Filename, os.O_WRONLY|os.O_CREATE, 0666) io.Copy(f, file) checkErr(err) defer f.Close() defer file.Close() fmt.Println("upload success") } }
func checkErr(err error) { if err != nil { err.Error() } }
func main() { http.HandleFunc("/upload", upload) err := http.ListenAndServe(":8888", nil) if err != nil { log.Fatal("listenAndServe: ", err) } }</pre>
最主要的其實也就是這兩句:
f, err := os.OpenFile("./test/"+handle.Filename, os.O_WRONLY|os.O_CREATE, 0666) io.Copy(f, file)執行目錄,權限,然后執行copy
upload.gptl文件:
<html> <head></head> <body> <form action="upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" value="" /> <input type="submit" name="submit" /> </form> </body> </html>
如果當前目錄下沒有test文件夾,不會自動創建。需要手動創建
來自:http://my.oschina.net/0x4ad/blog/378209