参照
File upload in Node.js以及
node-formidable的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" 则无法改名。