CNode

异步上传图片失败,求教

Oowen-hong发布于12 年前最后回复12 年前6 回复5659 浏览0 收藏

我用 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)

C
chemdemo#1·12 年前
引用 owen-hong怎么用FormData来操作呢?不懂,能具体点吗?
var fd = new FormData();
fd.append('data', 'your data');
xhr.send(fd);

差不多这样?

O
owen-hong#2·12 年前
引用 owen-hong怎么用FormData来操作呢?不懂,能具体点吗?

@chemdemo 谢谢,问题已经解决了

C
coswind#3·12 年前

ajax post是用的jquery么。http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery

post的data用FormData试下呢?

O
owen-hong#4·12 年前

对的,我用的jquery来操作的

O
owen-hong#5·12 年前

怎么用FormData来操作呢?不懂,能具体点吗?

参与回复
登录后即可参与回复。登录