2

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

http://192.168.9.39/account_5.pdf

我想在流星中提供这个,以便用户可以点击一个链接,例如http://server.meteor.com/temp/account_5.pdf

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

我愿意接受任何建议,即使它用完了节点模块或其他东西

4

3 回答 3

2

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

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

或者你可以像你建议的那样使用http://www.catonmat.net/http-proxy-in-nodejs/

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

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

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

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

于 2013-01-20T18:01:48.680 回答
1

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

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

于 2013-01-20T15:24:58.963 回答
0

这有点骇人听闻,但是您可以创建一个路由(使用 Meteor Router)来响应/temp/*并在加载远程 URL 的那些页面中放置一个 iframe。它不会很优雅,但它会起作用!如果您需要快速完成此操作。

或者你可以做一个跨域 XHR 请求并以这种方式获取文件,这可能更像 Meteor-ish。但我得看那个。;-)

于 2013-01-20T16:06:45.997 回答