登录
首页 >  Golang >  Go问答

可以在 HTTP 请求的 Form-Data 中同时包含文本和文件吗?

来源:stackoverflow

时间:2024-03-04 17:45:28 218浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《可以在 HTTP 请求的 Form-Data 中同时包含文本和文件吗?》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

我正在 go lang rest api 存储库中工作。

我想构建一个接收文件的端点(作为表单数据的一部分,所以我想我将使用 request.formfile('my-file-key'))。这个端点还应该接受 json 模型的主体(我想它会用这样的东西进行解码:

var myData model.MyModel
json.NewDecoder(request.Body).Decode(&myData)

但是我遇到了很多问题。是否可以通过 http 请求在表单数据中同时发送正文和文件?

如果我尝试发送这两个请求,我会收到来自 formfile 的错误,指出它找不到密钥名称的文件(但如果我发送完全相同的请求但没有正文,则不会发生此错误)。我猜它在解码请求时遇到问题。


解决方案


您需要的是一个多部分请求。一部分可以是JSON数据,另一部分是文件数据。

如果您使用 Go 客户端准备请求,则需要使用 mime/multipart 包创建 Writer,然后使用 CreatePart 创建 JSON 部分,然后创建文件部分,并将请求提交到服务器。

在解码方面:由于主体是 JSON,因此您无法将其解析为表单。解析标题后,您必须使用 multipart.Reader 从正文中读取。同样,从该读取器中您将获得 Part,并从该部件读取数据。您将获得两部分,一部分用于 JSON 数据,另一部分用于文件数据。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

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