如何使用go的net / http或类似方法保存在多部分/表单数据POST请求中收到的文件?

青年开发者

对于上下文,我正在尝试为程序ShareX(https://getsharex.com/docs/custom-uploader创建一个自定义图像上传器我尝试了很多搜索词,但是找不到该问题的任何解决方案。

这是我当前的代码(位于文件main.go中):

package main

import (
    "fmt"
    "net/http"
)

func handleUpload(w http.ResponseWriter, r *http.Request) {
    r.ParseMultipartForm(16384)
    f, fi, _ := r.FormFile("file_image")
    _ = f
    fmt.Println(fi.Filename, fi.Size)

}

func main() {
    mux := http.NewServeMux()
    mux.HandleFunc("/upload", handleUpload)
    fmt.Println("Starting listener on port 8085")
    http.ListenAndServe(":8085", mux)
}

我的目标是将从请求中接收到的文件(图像)数据保存到本地文件中,但是我无法做到这一点,因为写入文件需要type[]bytef是type multipart.File

Moficodes

这是如何处理表单数据的示例。

这里的主要思想是使用io pkg https://golang.org/pkg/io/

r.FormFile返回type的接口FileFile工具ReaderWriter方法。因此,我们可以从一个文件复制内容,然后将其写入一个空文件。

package main

import (
    "fmt"
    "io"
    "log"
    "net/http"
    "os"
)

func uploadHandler(w http.ResponseWriter, r *http.Request) {
    switch r.Method {
    case "POST":
        r.ParseMultipartForm(10 << 20) //10 MB
        file, handler, err := r.FormFile("file_image")
        if err != nil {
            log.Println("error retrieving file", err)
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }
        defer file.Close()
        dst, err := os.Create(handler.Filename)
        if err != nil {
            log.Println("error creating file", err)
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }
        defer dst.Close()
        if _, err := io.Copy(dst, file); err != nil {
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }
        fmt.Fprintf(w, "uploaded file")
    }
}

func main() {
    http.HandleFunc("/upload", uploadHandler)

    http.ListenAndServe(":8085", nil)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用带有多部分表单数据的 HTTP POST 请求,来自 Facebook API 的错误响应

来自分类Dev

如何在多部分/表单数据请求中获取文件的实际文件大小

来自分类Dev

如何使用发布多部分/表单数据的请求来排列数据和文件的顺序?

来自分类Dev

使用vba发送包含当前Excel工作表的Post请求作为多部分表单数据

来自分类Dev

卷曲如何发布多部分/表单数据数据以及如何在Flask请求中读取多部分/表单数据

来自分类Dev

如何从多部分表单数据中获取Node JS中间件中的请求正文?

来自分类Dev

使用Objective-C POST多部分/表单数据

来自分类Dev

使用Python通过POST多部分表单数据上传文件

来自分类Dev

读取多部分表单数据而无需在.NET中本地保存

来自分类Dev

AngularJS如何上传多部分表单数据和文件?

来自分类Dev

Mule 4:HTTP请求程序:如何将Meta REST服务调用的多部分/表单数据作为POST正文发送?

来自分类Dev

如何在提琴手中拦截多部分/表单数据并访问作为请求一部分的二进制文件

来自分类Dev

如何在PHP上使用curl发出文件的多部分/表单数据请求和重复密钥

来自分类Dev

如何在PHP上使用curl发出文件的多部分/表单数据请求和重复键

来自分类Dev

如何在wicket中解析多部分表单数据

来自分类Dev

多部分表单数据是如何工作的?

来自分类Dev

使用RestRserve的多部分/表单数据

来自分类Dev

等同于curls --form的Python:使用“ form”参数中的数据创建多部分表单数据发布请求

来自分类Dev

等同于curls --form的Python:使用“ form”参数中的数据创建多部分表单数据后请求

来自分类Dev

如何在C#MVC 4 Web服务中使用多部分/表单数据请求

来自分类Dev

如何使用Request的多部分表单数据POST解决此AttributeError问题?

来自分类Dev

在Axios vue.js中使用多部分/表单数据发布请求发送阵列数据

来自分类Dev

如何使用Spring MockMvc输入多部分/表单数据?

来自分类Dev

如何使用ServiceStack处理多部分表单数据?

来自分类Dev

如何使用多部分/表单数据发布Facebook照片

来自分类Dev

如何使用多部分/表单数据发布Facebook照片

来自分类Dev

如何访问在多部分/表单数据POST中上传的内容数据?

来自分类Dev

如何在NodeJ中发送多部分/表单数据PUT请求?

来自分类Dev

如何在ajax中发送多部分/表单数据请求

Related 相关文章

  1. 1

    使用带有多部分表单数据的 HTTP POST 请求,来自 Facebook API 的错误响应

  2. 2

    如何在多部分/表单数据请求中获取文件的实际文件大小

  3. 3

    如何使用发布多部分/表单数据的请求来排列数据和文件的顺序?

  4. 4

    使用vba发送包含当前Excel工作表的Post请求作为多部分表单数据

  5. 5

    卷曲如何发布多部分/表单数据数据以及如何在Flask请求中读取多部分/表单数据

  6. 6

    如何从多部分表单数据中获取Node JS中间件中的请求正文?

  7. 7

    使用Objective-C POST多部分/表单数据

  8. 8

    使用Python通过POST多部分表单数据上传文件

  9. 9

    读取多部分表单数据而无需在.NET中本地保存

  10. 10

    AngularJS如何上传多部分表单数据和文件?

  11. 11

    Mule 4:HTTP请求程序:如何将Meta REST服务调用的多部分/表单数据作为POST正文发送?

  12. 12

    如何在提琴手中拦截多部分/表单数据并访问作为请求一部分的二进制文件

  13. 13

    如何在PHP上使用curl发出文件的多部分/表单数据请求和重复密钥

  14. 14

    如何在PHP上使用curl发出文件的多部分/表单数据请求和重复键

  15. 15

    如何在wicket中解析多部分表单数据

  16. 16

    多部分表单数据是如何工作的?

  17. 17

    使用RestRserve的多部分/表单数据

  18. 18

    等同于curls --form的Python:使用“ form”参数中的数据创建多部分表单数据发布请求

  19. 19

    等同于curls --form的Python:使用“ form”参数中的数据创建多部分表单数据后请求

  20. 20

    如何在C#MVC 4 Web服务中使用多部分/表单数据请求

  21. 21

    如何使用Request的多部分表单数据POST解决此AttributeError问题?

  22. 22

    在Axios vue.js中使用多部分/表单数据发布请求发送阵列数据

  23. 23

    如何使用Spring MockMvc输入多部分/表单数据?

  24. 24

    如何使用ServiceStack处理多部分表单数据?

  25. 25

    如何使用多部分/表单数据发布Facebook照片

  26. 26

    如何使用多部分/表单数据发布Facebook照片

  27. 27

    如何访问在多部分/表单数据POST中上传的内容数据?

  28. 28

    如何在NodeJ中发送多部分/表单数据PUT请求?

  29. 29

    如何在ajax中发送多部分/表单数据请求

热门标签

归档