我在訪問使用 golang 上傳的文件時遇到問題。我對這門語言真的很陌生,并且已經進行了多次嘗試 - 在網上也找不到任何答案。我究竟做錯了什么?在這段代碼中,我永遠不會到達列出上傳文件數量的塊。func handler(w http.ResponseWriter, r *http.Request) { fmt.Println("handling req...") if r.Method =="GET"{ fmt.Println("GET req...") } else { //parse the multipart stuff if there err := r.ParseMultipartForm(15485760) // if err == nil{ form:=r.MultipartForm if form==nil { fmt.Println("no files...") } else { defer form.RemoveAll() // i never see this actually occur fmt.Printf("%d files",len(form.File)) } } else { http.Error(w,err.Error(),http.StatusInternalServerError) fmt.Println(err.Error()) } } //fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:]) fmt.Println("leaving...")}更新我能夠讓上面的代碼工作。這很棒。下面的答案顯示了如何異步執行,這可能是比我的更好的代碼示例。
2 回答

楊__羊羊
TA貢獻1943條經驗 獲得超7個贊
如果你知道他們上傳文件的關鍵,你可以讓它更簡單我認為(這沒有經過測試):
infile, header, err := r.FormFile("file")
if err != nil {
http.Error(w, "Error parsing uploaded file: "+err.Error(), http.StatusBadRequest)
return
}
// THIS IS VERY INSECURE! DO NOT DO THIS!
outfile, err := os.Create("./uploaded/" + header.Filename)
if err != nil {
http.Error(w, "Error saving file: "+err.Error(), http.StatusBadRequest)
return
}
_, err = io.Copy(outfile, infile)
if err != nil {
http.Error(w, "Error saving file: "+err.Error(), http.StatusBadRequest)
return
}
fmt.Fprintln(w, "Ok")
- 2 回答
- 0 關注
- 270 瀏覽
添加回答
舉報
0/150
提交
取消