我想通过 jQuery post
请求发送一个文件。我的 node.js 将读取文件并将 data
插入 Mongodb 中。
这是我的 node.js 函数:
upload: function(req, res){
var FileName;
req.file('myFile').upload(function(err,files){
var i = 1;
if(err) return res.serverError(err);
FileName = files[0].filename; ......
如果直接从 html
发送一个 post
请求,上面的函数工作正常,如下所示:
<form method="post" action="/indi id="indiform" enctype="multipart/form-data">
<input type="file" name="myFile" id="myIndifile"/>
<input type="submit" id="indisubmitbutton" value="Submit" name="upload" class="btn btn-primary" id = "uploadFile"/>
</form>
现在我想从 jQuery 提交 post
请求并将响应 data
处理为:
var file = $("#myIndifile")[0].files[0];
$.ajax({
type: 'post',
url: '/indi',
async: false,
data: JSON.stringify({ myFile:file }),
contentType: "application/json",
success: function (data) {
alert(" Number of lines Read :"+data[0].lines+"\n"+"Number of records saved:"+data[1].saved);
}
});
这是抛出 无法读取 FileName = files[0].filename 错误中未定义的属性“文件名”
。
如果我这样发送请求:
var file = $("#myIndifile")[0].files[0];
var formdata = new FormData();
formdata.append("myFile", file);
$.ajax({
type: 'post',
url: '/indi',
data: formdata,
contentType: "multipart/form-data",
success: function (data) {
Pace.stop;
alert(" Number of lines Read :"+data[0].lines+"\n"+"Number of records saved:"+data[1].saved);
}
});
javascript 抛出 Uncaught TypeError: Illegal invocation error
.
如果我从 html 发送 post
请求,一切正常。
如何从包含文件内容的 jQuery 发送 post
请求?
最佳答案
第二个代码片段的问题是您设置的内容类型不正确,多部分表单数据需要一个边界。但是,当您将 FormData 对象传递给 $.ajax 时,如果您将 contentType 和 processData 设置为 false,它会为您设置正确的内容类型和边界。
var file = $("#myIndifile")[0].files[0];
var formdata = new FormData();
formdata.append("myFile", file);
$.ajax({
type: 'post',
url: '/indi',
data: formdata,
contentType: false,
processData: false,
success: function (data) {
Pace.stop;
alert(" Number of lines Read :"+data[0].lines+"\n"+"Number of records saved:"+data[1].saved);
}
});
关于javascript - node js通过jquery表单数据发送post请求报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24811957/