我正在尝试更改Sails JS应用程序的设置,并且有些麻烦地将参数传递给主体解析器以更改默认设置。
我以前遇到过此处描述的问题:Posting larger files
我相信可以通过更改默认的'limit'选项来正确解决此问题,因为100kb的默认大小减去formData对象的33%的开销与我可以/不能发送的文件大小完全一致。因此,提出的解决方案是:
var bodyParser = require('body-parser');
...
app.use(bodyParser.urlencoded( { limit: 1048576 } ));
,但是无法在我的Sails应用中实施该解决方案。我已经通读了Sails Documentation上有关更改中间件设置的信息,并在config / http.js文件中尝试了以下操作...
首次尝试-包装器
/**
* HTTP Server Settings
* (sails.config.http)
*/
module.exports.http = {
middleware: {
order: [
'startRequestTimer',
'cookieParser',
'session',
'refreshSessionCookie',
'bodyParserInit',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'requestLogger',
'router',
'www',
'favicon',
'404',
'500'
],
bodyParserInit : (function (){
let bodyParser = require('body-parser');
return bodyParser( { extended: true, limit: 1073741824 } )
})(),
)
},
// cache: 31557600000
};
第二次尝试-覆盖
/**
* HTTP Server Settings
* (sails.config.http)
*/
module.exports.http = {
middleware: {
order: [
'startRequestTimer',
'cookieParser',
'session',
'refreshSessionCookie',
//'bodyParserInit',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'requestLogger',
'router',
'www',
'favicon',
'404',
'500'
],
bodyParser: (function _configureBodyParser(){
let skipper = require('skipper');
let middlewareFn = skipper({
limit: 1073741824,
});
return middlewareFn;
})(),
)
},
// cache: 31557600000
};
但是,无论我做什么,该限制都仍然设置为100kb,因此都无法解决我的问题。如何正确实现此功能,以便正文解析器接受最大50kb的文件?我想我要么配置不正确,要么是其他东西覆盖了我所做的事情。
编辑:我使用的是Sails版本> 12.0.X
答案 0 :(得分:0)
如果您使用Sails> v0.12.x:
module.exports.http = {
middleware: {
// ... options
bodyParser: require('skipper')({ limit: 1073741824 })
}
};
对于帆 module.exports.http = {
middleware: {
order: [
// ... options
// 'bodyParser', <- remove bodyParser
'skipper', // <-- add skipper
],
skipper: require('skipper')({ limit: 1073741824 })
}
};
答案 1 :(得分:0)
想知道您是否看过这个Sails GitHubIssue
似乎非常相关,从看起来很少有人能使它起作用。