为了账号安全,请及时绑定邮箱和手机立即绑定

我可以在 http 请求的表单数据中有正文和文件吗

我可以在 http 请求的表单数据中有正文和文件吗

Go
天涯尽头无女友 2022-06-13 17:06:35
我正在使用 Go Lang REST API 存储库。我想构建一个接收文件的端点(作为表单数据的一部分,所以我想我会使用request.FormFile('my-file-key'))。这个端点还应该接受一个 JSON 模型的主体(我想它会被这样解码:var myData model.MyModel json.NewDecoder(request.Body).Decode(&myData)但我遇到了很多问题。是否可以通过 http 请求同时发送表单数据中的正文和文件?如果我尝试同时发送两者,我会FormFile因为找不到密钥名称的文件而出错(但如果我发送完全相同的请求而没有正文,则不会发生此错误)。我猜它在解码请求时遇到了麻烦。
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

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

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

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


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信