Go 如何在同一请求中发布文件和表单字段?

Go 如何在同一请求中发布文件和表单字段?,go,http-post,Go,Http Post,我有下面的代码,我试图用它发送一个post请求,在那里我想上传一个js.map文件到bugsnag ... body := &bytes.Buffer{} writer := multipart.NewWriter(body) part, err := writer.CreateFormFile(filetype, filename) if err != nil { log.Fatal(err) } fmt.Printf("Sending %s to bugsnag",

我有下面的代码,我试图用它发送一个post请求,在那里我想上传一个js.map文件到bugsnag

...  
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, err := writer.CreateFormFile(filetype, filename)

if err != nil {
    log.Fatal(err)
}

fmt.Printf("Sending %s to bugsnag", filename)

io.Copy(part, file)
writer.Close()
request, err := http.NewRequest("POST", bugsnagUrl, body)

if err != nil {
    log.Fatal(err)
}

request.Header.Add("Content-Type", writer.FormDataContentType())

// This is where my problem seems to be, I can't add form values this way because the map is nil
request.Form.Add("apiKey", bugsnagToken)
request.Form.Add("minifiedUrl", fileurl)
request.Form.Add("sourceMap", filename)
request.Form.Add("overwrite", "true")
client := &http.Client{}

response, err := client.Do(request)

if err != nil {
    log.Fatal(err)
}
defer response.Body.Close()
上面的示例给出了以下错误

恐慌:分配到nil映射中的条目

goroutine1[正在运行]:net/url.url.Values.Add(…)

我一直找不到任何关于如何做到这一点的例子,我用了关于如何上传文件的例子来达到这个目的


我似乎可以发布文件,但如何发布文件并在请求中包含post表单值?

您应该添加如下表单字段

writer.WriteField("apiKey", bugsnagToken)
writer.WriteField("minifiedUrl", fileurl)
writer.WriteField("sourceMap", filename)
writer.WriteField("overwrite", "true")
writer.Close()

api文档在哪里?@KibGzr我认为这与这个问题没有直接关系,但是上传源地图的Bugsnag文档可以在这里找到