2014-12-27 72 views
0

我(作爲客戶端)試圖使用restify發佈圖像,並且服務器只需要保存它。將readstream管道寫入寫入流不起作用

req.pipe(fs.createWriteStream('test.jpg')); 

不工作。一個空文件被創建,但僅此而已。它適用於將req.body複製到緩衝區,然後fs.writeFile(...)。我也試過req.body.pipe,但是這會引發錯誤。

+0

只是想知道,這是爲網格? 另外,你是否正在監聽writeStream上的[finish](http://nodejs.org/docs/v0.10.36/api/stream.html#stream_event_finish)事件?在發送響應之前,您必須確保所有數據都通過流。 – MForMarlon 2015-03-04 18:08:10

回答

0

因此,您的中間件鏈中的其他內容(可能爲restify.bodyParser())已將請求正文以req.body的形式傳輸到緩衝區或字符串中,並且您無法兩次傳送某些內容。如果你想直接處理文件系統的流媒體,找到中間件並禁用它。

1

您可能正在使用一個正在讀取請求中所有數據的正文解析器中間件,因此沒有剩下可讀的內容。如果要直接從請求對象讀取,請嘗試調整路由處理程序和/或主體解析中間件的位置。

但是,這隻會在請求包含只有的圖像數據。通常情況下,如果請求至少包含一個文件,則格式爲multipart/form-data,因此您不能只管理請求並僅期待圖像數據。