异步上传图片失败,求教
发布于 10个月前 作者 owen-hong 527 次浏览

我用 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 回复

对的,我用的jquery来操作的

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

成功了,感谢,我用FormData提交数据成功了

var fd = new FormData();
fd.append('data', 'your data');
xhr.send(fd);

差不多这样?

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

回到顶部