我有一个带有两个按钮的HTML表单(以及其他文本输入区域),我有一些前端的javascript代码来处理提交。在提交时,我创建一个FormData对象并将文件存储在其中。然后我通过jquery ajax请求将它发送到node.js服务器。但是,这就是问题所在 - 当我尝试访问服务器中的文件时,文件总是未定义的 - 我已尝试使用req.body, req.files, req.file
访问它,但它始终未定义。这是ajax请求的问题,还是我接收它的方式?
上传文件按钮:
<input id="element_3" name="element_3" class="element file required" accept="application/pdf" type="file"/>
提交按钮:
<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', function(req, res) {
console.log("file: " + req.body.pdf);
});
编辑: 当我尝试使用multer时,这是我的(相关)代码:
app.post('/addPdf', [multer({dest: "./uploads/"}).single('avatar'), function(req, res) {
console.log("file: " + req.file);
}]);