Meteor:通过API下载视频文件并将其保存到磁盘

时间:2016-01-08 08:27:42

标签: node.js video meteor download

我试图实现以下目标:

  • 通过API从其他服务器下载视频
  • 将视频保存到磁盘,以<video>标记
  • 投放

但是我无助地卡住了 - 我试图下载的视频总是无效的(并且尺寸错误)。

这是我的服务器方法:

getVideo: function() {
  var fs = Npm.require('fs');
  var response = HTTP.get('http://webserver.com/getvideo');
  fs.writeFile('file.mp4',response.content, function (err) {
  if (err) throw err;
    console.log('It\'s saved!');
  });
}

我试过的其他事情和呈现基本相同的结果:

使用createWriteStream:

var file = fs.createWriteStream('file.mp4');
var response = HTTP.get('http://webserver.com/getvideo');
response.content.pipe(file);

with Buffer():

var buffer = new Buffer(response.content)
fs.writeFile('file.mp4', buffer)

还有不同的编码:base64, binary

网络服务器(用烧瓶写的)响应如下:

{
  content: ........00+ilst\u0000#�too\u001bdata\u0000\u0000\u0000\u0000Lavf52.48.0',
  headers: 
    { 'content-disposition': 'attachment; filename=file.mp4',
      'content-length': '632310',
      'content-type': 'video/mp4',
      'last-modified': 'Fri, 08 Jan 2016 00:45:49 GMT',
      'cache-control': 'public, max-age=43200',
      expires: 'Fri, 08 Jan 2016 20:21:08 GMT',
      etag: '"flask-1452213949.65-632310-220532295"',
      server: 'Werkzeug/0.11.3 Python/2.7.11',
      date: 'Fri, 08 Jan 2016 08:21:08 GMT' },
   data: null }

curl这样的工具或者webbrowser虽然可以正确下载(并放入磁盘)文件,但我缺少什么?

1 个答案:

答案 0 :(得分:3)

我设法让它发挥作用。

据我所见,内容得到编码,所以我需要删除该编码。

正如远端底部的[meteor][0.6.*] With meteorjs, how to download file with Meteor.http?所述:

  

meteor HTTP的编码选项是npmRequestOptions的子选项,所以HTTP.get(url,{npmRequestOptions:{encoding:null}}最终让我得到像jpg这样的二进制文件 - Bob Siefkes 2015年11月7日18时48分

感谢#meteor上的lanmower帮助我。