小编use*_*784的帖子

如何使用Golang net/http服务器接收上传的文件?

我正在玩Mux和net/http.最近,我试图获得一个带有一个端点的简单服务器来接受文件上传.

这是我到目前为止的代码:

server.go

package main

import (
    "fmt"
    "github.com/gorilla/mux"
    "log"
    "net/http"
)

func main() {
    router := mux.NewRouter()
    router.
        Path("/upload").
        Methods("POST").
        HandlerFunc(UploadCsv)
    fmt.Println("Starting")
    log.Fatal(http.ListenAndServe(":8080", router))
}
Run Code Online (Sandbox Code Playgroud)

endpoint.go

package main

import (
    "fmt"
    "net/http"
)

func UploadFile(w http.ResponseWriter, r *http.Request) {
    err := r.ParseMultipartForm(5 * 1024 * 1024)
    if err != nil {
        panic(err)
    }

    fmt.Println(r.FormValue("fileupload"))
}
Run Code Online (Sandbox Code Playgroud)

我想我已经把问题缩小到实际从里面的请求中检索身体了UploadFile.当我运行此cURL命令时:

curl http://localhost:8080/upload -F "fileupload=@test.txt" -vvv
Run Code Online (Sandbox Code Playgroud)

我得到一个空响应(正如预期的那样;我不打印到ResponseWriter),但我只是在我运行服务器的提示符处打印了一个新的(空)行,而不是请求正文.

我将文件作为multipart发送(AFAIK,暗示使用-F而不是-dcURL),cURL的详细输出显示502字节发送:

$ curl http://localhost:8080/upload -F …
Run Code Online (Sandbox Code Playgroud)

multipartform-data go httpserver

27
推荐指数
3
解决办法
3万
查看次数

标签 统计

go ×1

httpserver ×1

multipartform-data ×1