【问题标题】:Can't view new files in meteors public directory无法查看流星公共目录中的新文件
【发布时间】:2015-03-17 03:50:15
【问题描述】:

当一个流星应用程序被编译时 (meteor build app),公共目录becomes \programs\web.browser\app 开发公共目录\public 中的所有文件现在都可以通过http://domain.tld/file-in-public-directory.jpg 访问

当我将一个新文件放入已编译的公共目录并尝试在浏览器中查看它时,我收到一个错误,提示 Meteor 没有该 url 的路由。当我在开发公共目录中执行此操作时,它可以完美运行,但不能在编译后的 (meteor build app) 中运行。

我需要这个,因为我想在那个目录上传新文件。

有什么帮助吗?

【问题讨论】:

    标签: javascript meteor upload public


    【解决方案1】:

    因此,您必须对其稍作调整,但您可以通过使用低级别的 connectHandlers 对象访问几乎任何您想要的文件夹,尤其是静态文件。

    这是一个示例,其中您有一个名为 .images 的文件夹(对 Meteor 自动刷新隐藏),每当向 http://[yoursiteURL]/images/ 发出请求时,它都会提供图像...

    var fs = Npm.require('fs');
    WebApp.connectHandlers.use(function(req, res, next) {
      var re = /^\/images\/(.*)$/.exec(req.url);
      if (re !== null) {   
        var filePath = process.env.PWD 
        + '/.images/' 
        + re[1];
        var data = fs.readFileSync(filePath, data);
        res.writeHead(200, {
          'Content-Type': 'image'
        });
        res.write(data);
        res.end();
      } else {  
        next();
      }
    });
    

    您正在使用正则表达式来确定传入请求是否正在尝试访问 /images/。如果是,我们将使用res.write() 发送带有适当标题的图像

    注意两点:

    1- 你不必使用任何特殊的东西(没有包等)来使用Npm.require('fs'),因为它是内置的并且可以使用。

    2- 使用fs.readFileSync 有点小技巧,而且会阻塞。您需要针对高性能的生产应用程序进行调整。

    希望这会有所帮助!有关connectHandlers 的更多信息,请访问here

    【讨论】:

      【解决方案2】:

      很高兴看到人们在那里尝试流星。这是很棒的东西——但与此同时,它看起来确实很复杂。真正帮助我的是使用这个应用程序:metoer-kitchen。我现在在处理我的项目时会使用它。

      【讨论】:

        猜你喜欢
        • 2011-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多