我想弄清楚如何在 Go 中接受/接收 HTTP Post。我只是希望能够接收文件,获取其 MIME 类型并将文件保存在本地。我一整天都在搜索,但我能找到的只是如何将文件发送到某个远程位置,但我发现的所有示例都没有涵盖接收它。任何帮助,将不胜感激。使用 Justinas 的示例并与我现有的实验相结合,我已经走了这么远,但似乎从未调用过 m.Post。package mainimport ( "fmt" "io" "net/http" "os" "github.com/codegangsta/martini" "github.com/codegangsta/martini-contrib/render")func main() { m := martini.Classic() m.Use(render.Renderer(render.Options{ Directory: "templates", // Specify what path to load the templates from. Layout: "layout", // Specify a layout template. Layouts can call {{ yield }} to render the current template. Charset: "UTF-8", // Sets encoding for json and html content-types. })) m.Get("/", func(r render.Render) { fmt.Printf("%v\n", "g./") r.HTML(200, "hello", "world") }) m.Get("/:who", func(args martini.Params, r render.Render) { fmt.Printf("%v\n", "g./:who") r.HTML(200, "hello", args["who"]) }) m.Post("/up", func(w http.ResponseWriter, r *http.Request) { fmt.Printf("%v\n", "p./up") file, header, err := r.FormFile("file") defer file.Close() if err != nil { fmt.Fprintln(w, err) return } out, err := os.Create("/tmp/file") if err != nil { fmt.Fprintf(w, "Failed to open the file for writing") return } defer out.Close() _, err = io.Copy(out, file) if err != nil { fmt.Fprintln(w, err) } // the header contains useful info, like the original file name fmt.Fprintf(w, "File %s uploaded successfully.", header.Filename) }) m.Run()}
1 回答
- 1 回答
- 0 关注
- 239 浏览
添加回答
举报
0/150
提交
取消