当流媒体应用程序被编译(meteor build app
)时,公共目录becomes \programs\web.browser\app
现在可以使用\public
访问开发公共目录http://domain.tld/file-in-public-directory.jpg
中的所有文件
当我将一个新文件放入已编译的公共目录并尝试在浏览器中查看时,我收到一个错误,该错误表明Meteor没有该URL的路由。当我在开发公共目录中执行此操作时,它可以完美无缺,但不能在编译的(meteor build app
)中完成。
我需要这个,因为我想在该目录中上传新文件。
任何帮助?
答案 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。我现在在处理我的项目时使用它。