`
songkang666
  • 浏览: 103068 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

formidable上传文件内存溢出

 
阅读更多
参照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" 则无法改名。
分享到:
评论
1 楼 nonocast 2013-06-13  
form.on 'file', (field, file) -> console.log file.path

相关推荐

Global site tag (gtag.js) - Google Analytics