我在访问使用 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 关注
- 243 浏览
添加回答
举报
0/150
提交
取消