【问题标题】:How to handle conditional file downloads in meteor.js如何处理meteor.js中的条件文件下载
【发布时间】:2014-09-20 22:08:12
【问题描述】:

在 php 中,您可以使用 headers 来强制下载文件,也可以隐藏实际文件位置等。

如果您只希望某些用户在某些条件下能够下载某些文件,这很有用。

我将如何在流星中做到这一点?我玩过 Node.js fs 模块,并设法在客户端检索文件的二进制版本。但是我如何将其转换为已下载的实际文件?

谢谢!

【问题讨论】:

    标签: node.js meteor


    【解决方案1】:

    三个简单的步骤:

    1. 使用meteorite
    2. 添加iron-router 包:mrt add iron-router
    3. 创建一个服务器方法来提供您的文件。下面是一个例子:

      Router.map(function () {
        this.route('get-image', {
           where: 'server',
           path: '/img',
           action: function () {
              console.log('retrieving ' + this.request.query.name);
              this.response.writeHead(200, {'Content-type': 'image/png'}, this.request.query.name);
              this.response.end(fs.readFileSync(uploadPath + this.request.query.name));
          }
        });
      });
      

    在本例中,请求是带有一个参数name=name-of-pdf.pdfHTTP GET

    真的就是这样。希望这是您要找的。​​p>

    【讨论】:

    • 我明天试试这个(这里是 00:25),但完全有道理!不知道你可以这样使用路由器。谢谢!
    • 像魅力一样工作。谢谢!
    • 刚刚编辑了使用 iron-router 的答案,但我不知道为什么代码没有显示为代码。如果有人可以编辑它并解释这将非常有帮助
    • 这究竟是如何实现条件部分的呢?似乎知道链接的每个人,或者猜到它的人都可以下载它
    • 很容易检查用户是否登录:Meteor.userId() 提供此信息。或者,您可以使用预先生成的令牌添加第二个参数。这将允许一次性下载。无论如何,这个例子是一个起点。你还是得好好想想
    猜你喜欢
    • 1970-01-01
    • 2014-06-24
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多