2015-03-30 28 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

相关问题