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

Go - 接受 http 发布多部分文件

Go - 接受 http 发布多部分文件

Go
30秒到达战场 2021-06-30 10:15:02
我想弄清楚如何在 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
提交
取消
意见反馈 帮助中心 APP下载
官方微信