我希望通过 jQuery 的 post
请求发送文件。我的 node.js 将会读取这个文件并将数据插入到 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);
}
});
这是一个抛出错误的例子:Cannot read property 'filename' of undefined at FileName = files[0].filename error
。
如果我发送如下请求:
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
请求?