formidable上传文件内存溢出

参照[url=http://nonocast.cn/file-upload-in-node-js-part-1/]File upload in Node.js[/url]以及[url=https://github.com/felixge/node-formidable]node-formidable[/url]的API,做文件的上传,代码如下:

form = new formidable.IncomingForm()
form.encoding = 'utf-8'
form.uploadDir = folder
form.keepExtensions = true
form.parse @request, (err, fields, files) ->
console.log '上传文件: ' + v.name for k,v of files


当多次上传大文件时(1.64GB),上传一到两次(传完就删),第二或三次时,Node.js后台会报:
FATAL ERROR: JS Allocation failed - process out of memory

当我改为传多个文件的时候,这个问题奇迹般的被解决了,但是新问题出现:
前台页面中:

'<input type="file" name="upload" multiple="multiple">

用multiple指定可以同时选中多个文件一块上传,但是,当选中“软件1.dmg,软件2.dmg,软件3.dmg“后,formidable中的files对象仅有一个upload对象,而该upload对象仅存有最后的 软件3.dmg 的信息:

{ fields: {},
files:
{ upload:
{ domain: null,
_events: {},
_maxListeners: 10,
size: 1723665548,
path: '61e2a16498d2622b43cc79922be2256b',
name: '软件3.dmg',
type: 'application/octet-stream',
hash: null,
lastModifiedDate: Sat Jun 08 2013 17:04:07 GMT+0800 (CST),
_writeStream: [Object]
}
}
}

而如果想要在上传文件之后,还要保持原文件名,那么"软件1.dmg,软件2.dmg" 则无法改名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值