Http Golang:io.Pipe的多部分POST多部分请求-无法正确获取

Http Golang:io.Pipe的多部分POST多部分请求-无法正确获取,http,go,pipe,multipart,Http,Go,Pipe,Multipart,我正在使用GO multipart with io将文件上载到本地服务器,但此功能每次都失败。(这只是表单请求部分) 我期待着像这样的请求 --f82711203f053f26bd2ea538ab381e30ec1468bff784e34174b11bb679dc Content-Disposition: form-data; name="file"; filename="nov.txt" Content-Type: application/octet-stream November 2

我正在使用GO multipart with io将文件上载到本地服务器,但此功能每次都失败。(这只是表单请求部分)

我期待着像这样的请求

--f82711203f053f26bd2ea538ab381e30ec1468bff784e34174b11bb679dc
Content-Disposition: form-data; name="file"; filename="nov.txt"
Content-Type: application/octet-stream

   November 2019
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30


--f82711203f053f26bd2ea538ab381e30ec1468bff784e34174b11bb679dc
Content-Disposition: form-data; name="json"

{"data_profile_id":"1","file_sha":"12345678","no_cache":true,"service_name":"test","tenant_id":"tenant"}
--f82711203f053f26bd2ea538ab381e30ec1468bff784e34174b11bb679dc--

但我明白了

--c3b154dc079686ba162e0ab057c59580932ebab25294569201ef854394a7
Content-Disposition: form-data; name="file"; filename="102.pdf"
Content-Type: application/octet-stream


--c3b154dc079686ba162e0ab057c59580932ebab25294569201ef854394a7
Content-Disposition: form-data; name="json"
如果我搬出去的话

// encode params into Json
        var j []byte
        j, err = json.Marshal(params)
        if err != nil {
            return
        }
        part2, err := writer.CreateFormField("json")
        if err != nil {
            return
        }

        _, err = io.Copy(part2, bytes.NewBuffer(j))
        if err != nil {
            return
        }
然后它似乎让我有点接近预期

--f82711203f053f26bd2ea538ab381e30ec1468bff784e34174b11bb679dc
Content-Disposition: form-data; name="file"; filename="nov.txt"
Content-Type: application/octet-stream

   November 2019
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30


--f82711203f053f26bd2ea538ab381e30ec1468bff784e34174b11bb679dc

这里有专家吗?我遗漏了什么?

我将您的代码粘贴到了操场上,它按预期运行。下面是代码的改进版本:。将切片直接写入零件,而不是创建io.Reader和io.Copy。返回错误。谢谢,两个解决方案都有效。第一个是问题的
httpreq
的精确副本。如果这样做有效,那么问题是什么?
--f82711203f053f26bd2ea538ab381e30ec1468bff784e34174b11bb679dc
Content-Disposition: form-data; name="file"; filename="nov.txt"
Content-Type: application/octet-stream

   November 2019
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30


--f82711203f053f26bd2ea538ab381e30ec1468bff784e34174b11bb679dc