登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-15 22:27:34 371浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《如何在同一请求中发布文件和表单字段?》,涉及到,有需要的可以收藏一下

问题内容

我有以下代码,我尝试使用它来发送发布请求,我想将 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 映射中的条目 goroutine 1 [运行]: net/url.url.values.add(...)

我无法找到任何有关如何执行此操作的示例,我使用了有关如何从该问题上传文件的示例来达到此目的。

我似乎能够发布文件,但是如何发布文件并在我的请求中包含发布表单值?


解决方案


您应该添加这样的表单字段

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

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>