2015-03-30 33 views
0

我正在從設備接收視頻字節,並且它應該是多部分請求。它是一個在node.js中創建的post api。我怎樣才能在node.js中的後api中接收多部分請求?以下是當前正在保存視頻字節的代碼。在node.js中發送從設備到服務器的多部分請求

app.js 
app.post('/saveVideo',service.saveVideo); 

routes.js(class service method saveVideo) 
var video_byte_string = req.param('videoByteStr'); 
var writeStream = gfs.createWriteStream({mode:'w',content_type: 'video/mov'}); 
var buffer = new Buffer(video_byte_string).toString('base64'); 
var response = streamifier.createReadStream(buffer).pipe(writeStream); 
+0

你試過我的答案?如果是的話,請告訴我這是什麼結果? – Dineshaws 2015-04-01 05:13:57

+0

@Dineshaws不,我沒有。我今天會嘗試,我會告訴你結果。 – 2015-04-01 08:06:43

回答

0

您需要添加視頻後再見字符串分隔符像下面

如果字節的字符串是 - 「ABCDEFGHIJKLMNOPQRSTUVWXYZ」;

,那麼你需要添加任何分隔符(#####)這樣的,以確定完整的字符串

的結束,現在您的請求字符串會是這樣 - 「ABCDEFGHIJKLMNOPQRSTUVWXYZ」 +'#### #';

現在你的請求字符串具有終止分隔(#####),從中可以找出你的完整塊

var video_byte_string = req.param('videoByteStr'); 
isCorrectString = false; 
data_stream += video_byte_string; 
var n = data_stream.lastIndexOf("#####"); 
if (n === -1) { 
    var steamArr= data_stream.split("#####"); 
    var completeByteString = steamArr[0]; 
    isCorrectString = true; 
} 

if(isCorrectString) { 

    var writeStream = gfs.createWriteStream({mode:'w',content_type: 'video/mov'}); 
    var buffer = new Buffer(completeByteString).toString('base64'); 
    var response = streamifier.createReadStream(buffer).pipe(writeStream); 
} 

感謝

+0

我有一個查詢,是否req.param('videoByteStr')只接收一次請求?這意味着它只會收到一個塊? – 2015-04-01 08:23:29

+0

你在用蒸嗎?如果是,那麼你將收到大塊 – Dineshaws 2015-04-01 09:16:51

+0

上面的代碼是使用流。 – 2015-04-02 05:43:35

相關問題