【问题标题】:How to use node-formidable with express.bodyParser() and response.write()如何通过 express.bodyParser() 和 response.write() 使用 node-formidable
【发布时间】:2012-04-06 18:13:09
【问题描述】:

我正在使用 node-formidable 上传 multipart/formdata 。只要我一切正常

评论该行:

//app.use(express.bodyParser());

但问题是我想在客户端实现一个进度条。 为此,我正在尝试做这样的事情:

form.on('progress',function(a,b){
 response.write() //Gives error saying Can't set headers after they have been sent
})

当我使用 express bodyParser() res.write() 时效果很好。

PS:我知道这可以使用 socket.io 来完成,但我认为这不是一个优雅的解决方案。

有没有办法在使用 response.write() 的同时使用 formidable ?

谢谢。

【问题讨论】:

  • response.write 也不是一个非常干净的解决方案。除了通过 socket.io 之外,任何人都知道如何发送进度条数据?
  • 为什么 Socket.io 对您来说不是一个非常干净的解决方案?它完全符合您的要求,而且实施起来非常简单。

标签: javascript node.js socket.io express


【解决方案1】:

使用正文解析器,您应该能够将“数据”事件绑定到 req 对象,然后使用 res.write() 写入 res 对象。

【讨论】:

  • 问题是浏览器(或node.js)只要打开文件上传就不会监听任何req或res事件。文件上传完成后,所有内容都会立即执行。
  • 文件上传过程中多次触发数据事件。
【解决方案2】:

我认为您针对该请求发送了两次响应。你不能简单地在节点中做到这一点。解决方法很少。我建议你阅读这两个答案。这可能会有所帮助。

How to render multiple times on the same response object with ExpressJS?

Can I send multiple responses via Node.js to the client?

【讨论】:

    猜你喜欢
    • 2013-08-13
    • 2011-07-28
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    相关资源
    最近更新 更多