在 Golang 中访问上传的文件

我在访问使用 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...")

}

更新

我能够让上面的代码工作。这很棒。下面的答案显示了如何异步执行,这可能是比我的更好的代码示例。


LEATH
浏览 244回答 2
2回答

杨__羊羊

如果你知道他们上传文件的关键,你可以让它更简单我认为(这没有经过测试):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")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go