通过使用formData的获取将文件发送到Nodejs服务器返回req.files null

时间:2020-02-25 06:59:02

标签: javascript node.js forms express multipartform-data

我一直通过将action属性和多部分enctypes发送到我的html表单来发送文件和表单数据。最近,我需要使用fetch发送表单,并使用new FormData()可以读取给定html表单的所有字段和文件。但是在nodejs端,req.files返回null。当我使用表单action属性时,它可以正常工作。

客户端

let formData = new FormData(document.getElementById('additem'));
let response = await fetch(`${window.location.href}/inventory`, {
            method: "POST",
            body: formData
        });

在服务器端,我仅使用express-bodyparser(现在是默认设置),并尝试使用req.files访问文件; 我知道我可以使用multerformidable,但是我想知道是否有办法使它与我的atm一起工作。 谢谢。

2 个答案:

答案 0 :(得分:1)

在服务器端,我只是使用express-bodyparser(现在是默认值),并尝试使用req.files访问文件;我知道我可以使用multer或功能强大,但我想知道是否有办法使其与我的atm一起工作。

不,没有。 FormData个对象会生成多部分实体。

请参见the documentation for body parser

由于多部分实体的复杂性和 通常是大自然。对于多部分实体,您可能会感兴趣 以下模块:

  • busboy和connect-busboy
  • 多方和连接多方
  • 可塑的
  • multer

答案 1 :(得分:-1)

Content-Type在哪里,如果您要发送文件,则需要指定 在标题上,默认情况下,内容类型为application / json

Mozilla文档中有一个很好的例子:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch