【问题标题】:Can I have a body and a file in the Form-Data of a http request我可以在 http 请求的表单数据中有正文和文件吗
【发布时间】:2020-10-30 14:01:11
【问题描述】:

我正在使用 Go Lang REST API 存储库。

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

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

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

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

【问题讨论】:

    标签: http go https rest


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 2023-02-01
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      相关资源
      最近更新 更多