如何使用 node.js 运行时访问 Azure Function App 函数中的 multipart/form-data
Posted
技术标签:
【中文标题】如何使用 node.js 运行时访问 Azure Function App 函数中的 multipart/form-data【英文标题】:How to access multipart/form-data in Azure Function App function with node.js runtime 【发布时间】: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 请求发送的文件数据?
【问题讨论】:
【参考方案1】:表单必须将“enctype”设置为“multipart/form-data”而不是“type”。
【讨论】:
【参考方案2】:您需要确定传入的请求是多部分请求,例如 - req.headers["content-type"]
,或者您是否有其他方法。
一旦您确定请求是多部分/表单数据,您就可以使用 parse-multipart-data
或 Form-data-packages 等库来解析原始多部分负载。
【讨论】:
感谢您的信息!如果需要,我会设置标题。事实证明,当它应该是“enctype = ...”时,我声明了 type="multipart/form-data"。哇!!以上是关于如何使用 node.js 运行时访问 Azure Function App 函数中的 multipart/form-data的主要内容,如果未能解决你的问题,请参考以下文章
Azure node.js API App - 在运行时失败(可能是node.js版本问题?)
带有 graphql cli 的 Azure node.js 相对路径
反序列化从 node.js (azure sdk) 发送的 Azure ServiceBus 队列消息时出错
Azure Web App-当您选择Runtime stack作为Node.js时,为什么只让您选择Linux作为操作系统?