无法在流星公共目录中查看新文件

时间:2015-01-19 07:12:28

标签: javascript meteor upload public

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

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

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

任何帮助?

2 个答案:

答案 0 :(得分:2)

因此,您必须稍微调整一下,但是通过使用低级别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

答案 1 :(得分:1)

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