Meteor代理文件到浏览器

时间:2013-01-20 10:27:12

标签: meteor

我在外部URL上有一个文件(只运行服务器meteor可以访问)

http://192.168.9.39/account_5.pdf

我想在流星中提供此功能,以便用户可以点击指向http://server.meteor.com/temp/account_5.pdf的链接

有没有办法可以做到这一点?也许直接将其流式传输给用户或将文件下载到/public/temp文件夹以便可以提供?我该怎么做?

即使它耗尽节点模块或其他东西,我也会接受任何建议

3 个答案:

答案 0 :(得分:2)

您是在运行自己的Meteor服务器,还是实际上想要部署到* .meteor.com? (你说“server.meteor.com”,所以我很想知道)。

从节点开始,您可以使用http.get检索远程文件,然后使用fs.writeFile将其保存到temp /目录。

或者您可以按照建议使用http://www.catonmat.net/http-proxy-in-nodejs/

之类的方式对其进行流式传输

如果您正在运行自己的服务器,最简单的方法是将此代码打包在一个小的npm模块中。节点的require__meteor_bootstrap__.require中暴露给Meteor代码,因此要触发获取远程文件,您可以执行类似__meteor_bootstrap__.require('my-npm-module').fetchFileToTemp(name)的操作。

对于流媒体选项,__meteor_bootstrap__.app是Meteor的连接服务器,您可以将自己的请求处理程序附加到

__meteor_bootstrap__.app(function (req, res, next) { ... });

以通常的方式连接中间件。

答案 1 :(得分:1)

如果您将pdf放在/ public文件夹中并进行部署,用户只需点击http://server.meteor.com/account_5.pdf即可访问pdf。

这是你期待的吗?希望这有帮助。

答案 2 :(得分:0)

这有点hackish,但你可以做一个响应/temp/*的路由(使用流星路由器)并在加载远程URL的那些页面中放置一个iframe。它不会很优雅,但它会起作用!如果您需要快速完成此操作。

或者您可以执行跨源XHR请求并以此方式获取文件,这可能更像Meteor-ish。但我必须看一下。 ; - )