【问题标题】:How to access multipart/form-data in Azure Function App function with node.js runtime如何使用 node.js 运行时访问 Azure Function App 函数中的 multipart/form-data
【发布时间】:2021-06-03 17:56:12
【问题描述】:

我有一个带有 HTTP 触发器的 Azure Function App (Node.js) 函数设置,我正在尝试访问 HTTP 请求文件数据,但我无法访问。有一个 HTML 表单向我的本地计算机上的函数的 URL 发送 POST 请求。这是表格:

<form
      type="multipart/form-data"
      action="http://localhost:7071/api/HttpTrigger1"
      method="POST"
    >
      <input type="file" name="file-one" />
      <button>Submit</button>
</form>

尽我所能,我的 HTTP 触发器函数的“req”参数的 req.body 和 req.rawBody 属性似乎只包含一个带有文件名的字符串,而不是任何文件数据。我无法在传递给 HTTP 触发器函数的 req 对象中找到任何文件数据。在这里和其他地方阅读后,我真的没有看到答案,到目前为止我尝试过的一切都没有奏效。没有在 JSON 正文中传递 base64 文件数据,有没有办法只从 HTTP 请求访问 multipart/form-data 文件数据?

我在互联网上找到了解决这种情况的指南,但他们的代码表明 req.rawBody 属性将包含似乎不正确的未解析数据。如何在 Function App 函数中访问随 HTTP 请求发送的文件数据?

【问题讨论】:

    标签: node.js azure azure-functions multipartform-data


    【解决方案1】:

    表单必须将“enctype”设置为“multipart/form-data”而不是“type”。

    【讨论】:

      【解决方案2】:

      您需要确定传入的请求是多部分请求,例如 - req.headers["content-type"],或者您是否有其他方法。

      一旦您确定请求是多部分/表单数据,您就可以使用 parse-multipart-dataForm-data-packages 等库来解析原始多部分负载。

      【讨论】:

      • 感谢您的信息!如果需要,我会设置标题。事实证明,当它应该是“enctype = ...”时,我声明了 type="multipart/form-data"。哇!!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-21
      • 2013-05-21
      • 1970-01-01
      • 2017-08-04
      • 2015-10-31
      • 2015-11-19
      • 1970-01-01
      相关资源
      最近更新 更多