我应该实现一个上传表格
我想过使用bodysarser,但我读过
http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html
我想过使用bodysarser,但我读过
http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html
解决方法
该警告专门针对将express.bodyparser中间件添加到整个堆栈,因为它将express.multipart添加到所有POST端点,因此所有POST端点都会自动接受文件上载.默认情况下,框架会自动将所有上传的文件保存到/ tmp,因此除非您正在清理它们,否则攻击者可能会使用上传的文件充斥您的磁盘.
如果要避免使用其他模块,则应该在要允许文件上载的端点上实现express.multipart.这就是我在说的:
var express = require("express"),app = express(); // middleware (no bodyparser here) app.use(express.json()); app.use(express.urlencoded()); // average GET endpoint app.get("/",function(req,res) { res.send('ok'); }); // average POST endpont app.post("/login",res) { res.send('ok'); }); // File upload POST endpoint app.post('/upload',express.multipart,res) { //File upload logic here //Make sure to delete or move the file accordingly here,otherwise files will pile up in `/tmp` });
请注意,在文件上载端点中包含express.multipart.此端点现在将处理多部分文件上载,并假设您正确处理它们,它们不会构成威胁.
现在,已经告诉了你所有这些,由于这个确切的问题,Connect正在努力弃用multipart,但似乎没有任何计划添加基于流的文件上传替换.他们推荐的是你使用node-multiparty使用流来避免将文件放在磁盘上.但是,似乎没有任何好的参考我可以找到使用multiparty作为中间件而不保存文件,所以你必须联系多方的作者或仔细看看用它来实现它的API .