异步上传图片失败,求教
我用 Node.js 的 app.use(express.bodyParser());
函数实现了提交表单上传图片,但是我想通过 Ajax 来异步上传图片,这个时候通过 Ajax POST 数据到后台后,却获取不到 req.files.filesName.path
这个属性。下面是我通过同步提交表单成功的代码:
<form method="post" enctype="multipart/form-data" action="/admin/doFile">
<input type="file" name="filesName">
<input type="button" value="提交" id="btn">
<input type="submit" value="OK">
</form>
exports.doFile = function(req, res,next){
// 获得文件的临时路径
var tmp_path = req.files.filesName.path;
var target_path = './public/uploads/' + req.files.filesName.name;
var patharray = target_path.split("/");
fs.rename(tmp_path, target_path, function(err) {
if (err) throw err;
fs.unlink(tmp_path, function() {
if (err) throw err;
var openUrl = '/'+ patharray[patharray.length-2] +'/'+ patharray[patharray.length-1];
res.json({
Url : openUrl,
});
// res.send(openUrl);
});
});
}
通过同步 POST 提交上面代码可以正常运行提交图片,但是我通过 Ajax 提交表单,后台且获取不到 req.files.filesName.path
这个属性值,求教各位大神是怎么解决异步提交图片的??
6 回复
ajax post是用的jquery么。http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery
post的data用FormData试下呢?
对的,我用的jquery来操作的
怎么用FormData来操作呢?不懂,能具体点吗?
成功了,感谢,我用FormData提交数据成功了
var fd = new FormData();
fd.append('data', 'your data');
xhr.send(fd);
差不多这样?
@chemdemo 谢谢,问题已经解决了