为了账号安全,请及时绑定邮箱和手机立即绑定

在 Golang 中访问上传的文件

在 Golang 中访问上传的文件

Go
LEATH 2021-06-11 18:10:26
我在访问使用 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")


查看完整回答
反对 回复 2021-06-28
  • 2 回答
  • 0 关注
  • 243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信