连接中间件Node.js最大文件大小

时间:2013-11-22 15:38:12

标签: node.js ftp node.js-connect

我在node.js上构建了一个FTP门户。上传超过100MB的文件时,我收到错误。

以下是错误输出:

{"error":{"message":"Request Entity Too Large","stack":"Error: Request         Entity Too Large\n 
at Object.exports.error (/home/ubuntu/sasite-ftp/node_modules/express/node_modules/connect/lib/utils.js:62:13)\n
at limit (/home/ubuntu/sasite-ftp/node_modules/express/node_modules/connect/lib/middleware/limit.js:46:47)\n
at multipart (/home/ubuntu/sasite-ftp/node_modules/express/node_modules/connect/lib/middleware/multipart.js:97:5)\n
at /home/ubuntu/sasite-ftp/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:57:9\n 
at urlencoded (/home/ubuntu/sasite-ftp/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js:52:72)\n 
at /home/ubuntu/sasite-ftp/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:55:7\n 
at json (/home/ubuntu/sasite-ftp/node_modules/express/node_modules/connect/lib/middleware/json.js:46:55)\n at Object.bodyParser [as handle] (/home/ubuntu/sasite-ftp/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:53:5)\n 
at next (/home/ubuntu/sasite-ftp/node_modules/express/node_modules/connect/lib/proto.js:190:15)\n 
at Object.cookieParser [as handle] (/home/ubuntu/sasite-ftp/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js:60:5)","status":413}}

我在第46和47行看了一下connect / lib / middleware / limit.js:

     if (len && len > bytes) return next(utils.error(413));

这似乎与limit.js中的这个函数有关:

module.exports = function limit(bytes){
if ('string' == typeof bytes) bytes = utils.parseBytes(bytes);
if ('number' != typeof bytes) throw new Error('limit() bytes required');
return function limit(req, res, next){
var received = 0
  , len = req.headers['content-length']
    ? parseInt(req.headers['content-length'], 10)
    : null;

如果需要,我可以发布更多代码,但是您可以在node_modules / express / node_modules / connect /

中轻松查找连接代码

如果有人对最大文件大小实际是什么有任何意见,以及对它有什么限制,那将非常感激。

编辑:最大文件大小为100MB,我在哪个文件中输入代码来改变这个,按照下面第一个建议的答案。

2 个答案:

答案 0 :(得分:2)

假设您正在以某种方式使用Connect多部分中间件,默认的最大上传文件大小为100MB,如下所示:

var limit = _limit(options.limit || '100mb');

如果要设置自己的文件上传限制,可以设置多部分中间件limit选项:

app.use(connect.multipart({
  limit: '1000mb'
}));

如果您使用connect.bodyParser(),它还会在内部使用多部分中间件,因此可以使用相同的方式指定选项:

app.use(connect.bodyParser({
  limit: '1000mb'
}));

答案 1 :(得分:0)

来自connect-multiparty Express Middleware connect-multipart/index.js

  • 传递的选项与multiparty'合并 Form对象,允许您配置上传目录, 大小限制等。例如,如果您想更改上传目录,请执行以下操作。

所以根据Multiparty Docs

  • maxFieldsSize - 限制所有字段(不是文件)可以以字节为单位分配的内存量。如果超出此值,则会发出错误事件。默认大小为2MB。

我和我一起工作:

var app = express(),
    multipart = require('connect-multiparty');

app.use(multipart({
    maxFieldsSize: '20MB'
}));