我试图实现以下目标:
<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虽然可以正确下载(并放入磁盘)文件,但我缺少什么?
答案 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帮助我。