2013-11-22 62 views
0

我有一個建立在node.js上的FTP門戶。上傳超過100MB的文件時,出現錯誤。連接中間件Node.js最大文件大小

以下是錯誤輸出:

{"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}} 

我看了看裏面連接/ lib目錄/中間件/在46和47 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 /快遞/ node_modules /連接/

如果任何人有什麼最大文件大小實際上是,和它的限制是什麼,這將是非常讚賞的任何輸入。

編輯:最大文件大小爲100MB,在什麼文件我輸入代碼來改變這種按照第一下面的建議答案。

回答

2

假設你正在使用的連接多中間件這種或那種方式,默認最大上傳文件大小爲100MB,這裏定義的:

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

如果你想設置自己的文件上傳限制,多中間件有一個limit選項可以設置:

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

如果使用connect.bodyParser(),該機還採用了多中間件內部,因此可以選擇以同樣的方式來指定:

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

請注意,'bodyParser'被棄用,並將在快速的下一個版本中刪除,因此不應再使用。 –

+0

感謝您的回答。在我接受之前,你能通過解釋我應該添加代碼的位置來幫助我嗎?在node_modules/express/node_modules/connect/middleware/limit.js文件中?或者別的地方? – shenk

+0

@ paul-mougel有沒有關於此的任何文檔?你知道替代實現是什麼嗎? – electrichead

0

從連接多黨快車中間件connect-multipart/index.js:通過

  • 的選項合併multipartyForm對象,允許您配置上傳目錄, 大小限制,等等。例如如果您想更改上傳目錄,請執行以下操作。

所以根據Multiparty Docs

  • maxFieldsSize - 限制的存儲器中的所有字段(而不是文件)的量可以以字節爲單位分配。如果超過此值,則會發出錯誤事件。默認大小是2MB。

我得到了我一起工作:

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

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