0
expressjs와 함께 node-formidable (https://github.com/felixge/node-formidable)을 사용하는 중에 문제가 발생했습니다 : 이제 connect-multipart는 더 이상 사용되지 않습니다 (http://www.senchalabs.org/connect/multipart.html).expressjs와 함께 node-formidable을 사용하는 중 오류가 발생했습니다
업로드 된 파일을 직접 구문 분석하기 위해 node-formidable을 사용하려고하는데 작동하지 못합니다. URL 인코딩 양식이 잘 작동하지만 멀티 파트가 아닙니다. 확실하지는 않지만 연결에서 오는 것 같아요 - csrf :
업데이트 : csrf 미들웨어를 제거하면 제대로 작동합니다.
Error: Forbidden
at Object.exports.error (/srv/www/mysite.com/nodejs/myapp/node_modules/express/node_modules/connect/lib/utils.js:63:13)
at createToken (/srv/www/mysite.com/nodejs/myapp/node_modules/express/node_modules/connect/lib/middleware/csrf.js:82:55)
at Object.handle (/srv/www/mysite.com/nodejs/myapp/node_modules/express/node_modules/connect/lib/middleware/csrf.js:48:24)
at next (/srv/www/mysite.com/nodejs/myapp/node_modules/express/node_modules/connect/lib/proto.js:193:15)
at next (/srv/www/mysite.com/nodejs/myapp/node_modules/express/node_modules/connect/lib/middleware/session.js:315:9)
at /srv/www/mysite.com/nodejs/myapp/node_modules/express/node_modules/connect/lib/middleware/session.js:339:9
at /srv/www/mysite.com/nodejs/myapp/node_modules/connect-redis/lib/connect-redis.js:101:14
at try_callback (/srv/www/mysite.com/nodejs/myapp/node_modules/connect-redis/node_modules/redis/index.js:581:9)
at RedisClient.return_reply (/srv/www/mysite.com/nodejs/myapp/node_modules/connect-redis/node_modules/redis/index.js:671:13)
at ReplyParser.<anonymous> (/srv/www/mysite.com/nodejs/myapp/node_modules/connect-redis/node_modules/redis/index.js:313:14)
어떻게해야합니까? 여기 내 코드입니다 :
// Body parser
app.use(express.urlencoded());
app.use(function(req, res, next) {
if (req.is('multipart/form-data') && req.method == "POST") {
var form = new formidable.IncomingForm();
form.uploadDir = "mytmpfolder";
form.parse(req, function(err, fields, files) {
req.files = files;
});
}
next();
});
// Cookie parser
app.use(express.cookieParser());
// Session
app.use(express.session({
key: 'secure_session',
store: new redisStore,
secret: 'secret',
proxy: true,
cookie: {
secure: true,
maxAge: null
}
}));
// CSRF
app.use(express.csrf());
app.use(function(req, res, next){
res.locals.token = req.csrfToken();
next();
});