`
songkang666
  • 浏览: 105882 次
  • 性别: 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

相关推荐

    NodeJS使用formidable实现文件上传

    本篇文章将详细介绍如何在Node.js中使用`formidable`库来实现文件上传功能。 首先,我们需要安装`formidable`模块。在终端中运行以下命令: ```bash npm install formidable ``` 安装完成后,我们可以在项目中...

    formidable

    2. **流式处理**:formidable支持流式处理上传的文件,这意味着文件可以在内存中处理,也可以直接写入磁盘,降低了内存消耗,提高了处理大文件的能力。 3. **实时事件**:当文件正在上传时,formidable会触发一系列...

    fileUploader:使用 formidable 上传文件的例子

    使用强大的上传文件的示例服务器。 ##终点###/上传POST 使用POST方法和multipart/form-data内容类型将文件上传到此端点响应包含文件 url 的 json 对象。 例如{ " url " : " ...

    前端开源库-st-formidable

    `st-formidable`是一个专门针对这一需求设计的Node.js模块,它简化了前端和后端之间表单数据,特别是文件上传的解析过程。 ### 1. `st-formidable`简介 `st-formidable`是基于`formidable`库的增强版,`formidable...

    node-formidable, 用于解析表单数据的node.js 模块,特别是文件上传.zip

    node-formidable, 用于解析表单数据的node.js 模块,特别是文件上传 强大 命令行目用于解析表单数据的node.js 模块,特别是文件上传。当前状态维护者需要: 请查看 ...

    formidable-zh_CN.zip

    在安装"formidable-zh_CN.zip" 汉化包时,用户通常需要将这两个文件上传到WordPress的wp-content/plugins/formidable/forms/languages目录下。一旦正确安装,Formidable Forms的所有界面元素,包括菜单、按钮、提示...

    meteor-formidable:用于解析表单数据的 node.js 模块,尤其是文件上传

    这个库是 `Formidable` 库的一个 Meteor 包装器,使得它能够无缝集成到 Meteor 框架中,为 Meteor 应用提供便捷的文件上传功能。 在 Node.js 中,处理文件上传通常涉及到读取 HTTP 请求中的multipart/form-data,这...

    koa2-formidable:koa2强大的中间件

    npm install koa2 - formidable -- save 原料药 const formidable = require ( 'koa2-formidable' ) const Koa = require ( 'koa' ) const app = new Koa ( ) app . use ( formidable ( opt ) ) opt是选择。 用 let...

    基于HT for Web矢量实现HTML5上传文件进度条

    "server.js"文件则可能包含了服务器端的实现,使用Node.js和Formidable库处理文件上传。当文件上传开始时,服务器可以发送文件上传进度更新到客户端,客户端接收到这些更新后,通过HT for Web更新进度条的视觉表示。...

    formidable-upload:使用强大的用于快递的可链接文件上传 api

    强大的上传用于 express 的可链接文件上传 api 使用。安装 $ npm install formidable-upload用法 var upload = require('formidable-upload');// ..upload() .accept('image/jpeg') .to(['public', 'images']) ....

    使用-HTTP-上传-G-级的文件之-Node.js-版本.pdf

    - 大文件通常需要分块上传,以避免一次性加载整个文件到内存中,`workeruploadchunk.js`可能负责接收和存储文件的分块。 - 使用`Formidable`解析上传的表单数据,包括文件分块。 - `workerprocessfile.js`可能...

    nodejs异步上传

    在formidable中,文件会被写入到内存或磁盘,这个过程是异步的。在客户端,jQuery FileUpload插件提供了一个`progress`事件,可以根据此事件更新上传进度条。每次文件部分数据上传时,服务器会发送一个进度更新,...

    node.js的文件上传

    在Node.js环境中,文件上传是一项常见的任务,尤其在构建Web应用程序时。Node.js以其非阻塞I/O模型和JavaScript的易用性,使得处理文件上传变得高效且灵活。本篇文章将深入探讨Node.js中实现文件上传的方法、相关库...

    基于HT for Web矢量实现HTML5文件上传进度条

    另一方面,`server.js`文件可能是一个Node.js服务器端脚本,使用了`formidable`库来处理上传的文件。`formidable`是一个流行的Node.js中间件,它可以解析HTTP请求体中的表单数据,包括文件上传。在服务器端,你需要...

    FileUpload

    对于大文件,通常需要分块上传,以防止内存溢出或超时。前端可以使用Blob API进行分块,后端则需要支持接收和合并这些块。 9. **云存储集成**: 一些应用会选择将文件直接上传到云存储服务,如Amazon S3、Google ...

    Egg.js 中 AJax 上传文件获取参数的方法

    在服务器端,使用Node.js的`formidable`模块来解析上传的文件。`formidable.IncomingForm`创建了一个表单解析器,调用`parse`方法来处理请求,并通过异步函数返回解析后的表单字段和文件列表。 在控制器中定义了`...

    Laravel开发-formidable

    **Laravel 开发与 Formidable** 在 Laravel 开发过程中,我们常常需要创建各种表单来收集用户输入的数据。`Laravel Formidable` 是一个专为 Laravel 设计的 Vue.js 表单生成器,它简化了在前后端之间构建动态、交互...

    如何使用javascript限制文件上传大小

    除了`multer`,还有其他工具和库可以帮助处理文件上传,如`formidable`(Node.js)、`flask-uploads`(Python Flask)、`laravel-filemanager`(PHP Laravel)等。这些工具提供了更高级的功能,如多文件上传、文件...

    使用-HTTP-上传-G-级的文件之-Node.js-版本.docx

    - `Formidable`:用于解析HTTP请求中的表单数据,特别适用于文件上传。 - `fs-extra`:扩展Node.js内置的`fs`模块,提供更丰富的文件系统操作功能。 7. **项目结构** - 在解决方案资源管理器中创建"Scripts...

Global site tag (gtag.js) - Google Analytics