0

我有一个基于 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,我在什么文件中输入代码以根据以下建议的第一个答案进行更改。

4

2 回答 2

2

假设您以一种或另一种方式使用 Connect 多部分中间件,默认的最大上传文件大小为 100MB,定义如下:

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

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

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

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

app.use(connect.bodyParser({
  limit: '1000mb'
}));
于 2013-11-22T15:45:23.587 回答
1

从 connect-multiparty Express 中间件connect-multipart/index.js

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

所以根据Multiparty Docs

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

我得到了我的工作:

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

app.use(multipart({
    maxFieldsSize: '20MB'
}));
于 2017-03-02T16:21:11.157 回答