2013-05-22 45 views
3

使用restify将文件上传到node.js应用程序时出现问题。Node.js + restify无法上传文件

这是很显然的事件没有被触发我上传的代码https://gist.github.com/maumercado/7ab5cbbfd27c6b825044

,但我真的不知道原因,也是文件被创建,但一旦我看到大小的信息,它说0字节。

也是这种server.js为了上载文件和节点0.10.7使用发布请求文件https://gist.github.com/maumercado/ecf948b4b8fc7d39e69e

林。

代码有什么问题?

谢谢

回答

5

它看起来像restify.bodyParser()的工作方式相同express.bodyParser(),因为它会处理上传你(以及在这个过程中消耗与请求传递的身体数据,所以没有什么留下来读一次你的处理程序被调用 - 因此,也没有事件)。

上传的数据写入临时文件req.files.selfie.path您的案例。

至于你打算做什么(上传进度),我不认为这是可能的,除非你自己实现bodyParser()的功能。但我并不太了解Restify的内部工作原理,对此100%肯定。

如果您使用浏览器作为客户端,那么您可以在那里实现上传进度。

+0

因此,如果我使用bodyparser,我必须阅读req.files.selfie.path,然后将它写在我想要的路径上...比如newfile.pipe(req.files.selfie.path)? ?如何才能恢复文件上传? – maumercado

+1

@maumercado如果可能,甚至可以使用['fs.rename()'](http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback)将临时文件重命名为其最终名称。 W.r.t.恢复上传:这不会与'express.bodyParser()'结合使用。我不知道任何模块会实现这样的功能,或:(:(**编辑**:检查[本文](http://net.tutsplus.com/tutorials/javascript-ajax/how- to-create-a-resumable-video-uploade-in-node-js /) - 他们使用'socket.io'来实现可恢复的上传)。 – robertklep