Iron router on Action 使用 Meteor.call 抛出 writeHead 不是一个函数
Iron router on action using Meteor.call throws writeHead is not a function
我正在尝试编写一个缓冲区,该缓冲区从服务器返回到客户端响应。
因此,我定义了一个路由,该路由运行以在函数上获取文件action
:
Router.route('/download/:blabla', {
name: 'download',
action: function () {
var that = this.response;
Meteor.call('downloadFile', blabla, function (err, result) {
// error check etc.
var headers = {
'Content-type' : 'application/octet-stream',
'Content-Disposition' : 'attachment; filename=' + fileName
};
that.writeHead(200, headers);
that.end(result);
}
}
});
这将引发:
调用"下载文件"的传递结果异常:类型错误: that.writeHead 不是一个函数
没有Metoer.call它工作...
我正在使用 nodejs 流在服务器端函数上获取缓冲区,它可以工作。
提前致谢
您是否尝试过在 IR 中使用仅限服务器端的路由? 即仅使用"{where:"server"}"在服务器上访问路由,以避免必须按照下面的示例从这里进行方法调用(注意在他的示例中提供文件需要根据注释添加 meteorhacks:npm 包,但您也许可以避免这种情况......
Router.route("/file/:fileName", function() {
var fileName = this.params.fileName;
// Read from a file (requires 'meteor add meteorhacks:npm')
var filePath = "/path/to/pdf/store/" + fileName;
var fs = Meteor.npmRequire('fs');
var data = fs.readFileSync(filePath);
this.response.writeHead(200, {
"Content-Type": "application/pdf",
"Content-Length": data.length
});
this.response.write(data);
this.response.end();
}, {
where: "server"
});
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 我可以在json对象中添加一个函数吗
- Javascript使函数一个接一个地执行
- 是JavaScript中的函数一个对象
- 两个几乎相等的jQuery函数;一个适用于IE,一个不适用于IE
- 两个Javascript函数一个window.onload=Custom.init;和一个window.onload=f
- 使javascript加载函数一个接一个地执行
- 如何通过两个嵌套的匿名函数(一个带有超时的事件处理程序)传递变量
- 为什么我不能让两个jQuery函数一个在另一个里面呢?
- 给函数一个变量名,而不是它的值
- 如何使用嵌入函数(一个滚动页由Pete - peachananr)
- 是否有可能给JavaScript函数一个类型/类?
- 确保两个函数一个接一个地执行,其中第一个函数内部有一个异步调用
- 两个不同的ajax函数一个接一个调用返回相同的值
- jQuery第一次更改函数一个工作
- 给这个函数一个id
- 如何给回调函数一个值一个变量在特定时刻
- 使用回调使两个函数一个接一个地运行
- 两个函数(一个用php)是否可以用“;onclick”;
- 两个几乎相同的函数.一个函数用Queue进行排队.Jquery效果在queued函数上不起作用.为什么