使用multer作为node.js服务器接收FormData对象

我有一个带有两个button的HTML表单(以及其他文本input区域),并且我有一些前端JavaScript代码来处理提交。 在提交时,我创build一个FormData对象并将其存储在其中。 然后我通过jquery ajax请求发送到一个node.js服务器。 然而,这是问题的地方 – 当我尝试访问服务器中的文件时,文件总是未定义 – 我试图用req.body, req.files, req.file访问它req.body, req.files, req.file但它总是未定义的。 这是ajax请求的问题,还是我收到的方式?

上传文件button:

 <input id="element_3" name="element_3" class="element file required" accept="application/pdf" type="file"/> 

提交button:

 <input id="saveForm" class="button_text" type="submit" name="submit" value="Submit"/> 

处理提交:

 $('#form_1039889').submit(function(event) { event.preventDefault(); event.stopImmediatePropagation(); var file = $('#element_3').get(0).files[0]; var fd = new FormData(); fd.append('pdf', file); $.ajax({ url: '/addPdf', data: fd, processData: false, contentType: false, type: 'POST', success: function(response) { //success TODO code } }); }); 

相关服务器代码:

 app.post('/addPdf', [multer({dest: "./uploads/"}).single('avatar'), function(req, res) { console.log("file: " + req.file); }]); 

因为您为文件设置了pdf对象,所以使用单个('avatar')而不是单个('pdf.file')。