使用Expressjs上传文件

刚开始学Node.js和Express,因为不熟悉遇到了很多问题。今天在实现一个上传文件功能的时候又遇到了麻烦,本以为很简单,但却花了很多时间。所以,决定记下来,希望给能看到的人减少麻烦。 经验告诉我应该就是前端一个submit,然后后端拿到数据就可以了。但是Google了很久,也找到了一些方法,但是试了之后都不行。很郁闷,后来解决了之后发现真的很简单。

Root Cause

其实罪魁祸首就是 body-parser ,在Express中使用的这个模块只支持 JSONurlencoded 。当我们submit文件的时候,它处理不了。所以办法很简单,在需要接受文件的地方把 body-parser 替换掉,推荐使用 connect-multiparty 。用法其实也很简单,稍微修改一下post方法就可以了:

var multipart = require('connect-multiparty');  
var multipartMiddleware = multipart();  
app.post('/upload', multipartMiddleware, function(req, resp) {  
    console.log(req.body, req.files);
    // don't forget to delete all req.files when done
});

TIPS

最后给个提示,只在需要接受文件的地方修改,不要全部修改。而且处理完了之后要记得把接收到临时文件删掉。

最后想想,其实这个问题很简单,但是网上的资料貌似少了一点,不知道是Node更新太快了,还是用的人太少了!

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章