我一直通过将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
访问文件;
我知道我可以使用multer
或formidable
,但是我想知道是否有办法使它与我的atm一起工作。
谢谢。
答案 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