如何使用node.js运行时访问Azure Function App函数中的多部分/表单数据

mwg9r5ms  于 2023-02-21  发布在  Node.js
关注(0)|答案(2)|浏览(93)

我的Azure Function应用程序(Node.js)函数设置具有HTTP触发器,我正在尝试访问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属性将保存未解析的数据,这似乎是不正确的。我如何访问在函数应用程序函数中与HTTP请求一起发送的文件数据?

8yparm6h

8yparm6h1#

您需要确定传入的请求是像-req.headers["content-type"]这样的多部分请求,还是您有其他方法可以做到这一点。
一旦识别出请求是多部分/表单数据,就可以使用parse-multipart-dataForm-data-packages等库解析原始的多部分负载。

myzjeezk

myzjeezk2#

表单必须将“enctype”设置为“multipart/form-data”,而不是“type”。请参见以下内容:

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

相关问题