我正在玩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)