我在外部URL上有一个文件(只运行服务器meteor可以访问)
http://192.168.9.39/account_5.pdf
我想在流星中提供此功能,以便用户可以点击指向http://server.meteor.com/temp/account_5.pdf
的链接
有没有办法可以做到这一点?也许直接将其流式传输给用户或将文件下载到/public/temp
文件夹以便可以提供?我该怎么做?
即使它耗尽节点模块或其他东西,我也会接受任何建议
答案 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。但我必须看一下。 ; - )