2013-05-22 50 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