Javascript Can';t查看meteors公共目录中的新文件
当meteor应用程序被编译时(Javascript Can';t查看meteors公共目录中的新文件,javascript,meteor,upload,public,Javascript,Meteor,Upload,Public,当meteor应用程序被编译时(meteor build app),公共目录变成\programs\web.browser\app开发公共目录\public中的所有文件现在都可以通过http://domain.tld/file-in-public-directory.jpg 当我将一个新文件放入已编译的公共目录并尝试在浏览器中查看它时,我得到一个错误,即Meteor没有该url的路由。当我在开发公共目录中这样做时,它工作得完美无缺,但在编译后的(meteor build app)中却不行 我需要
meteor build app
),公共目录变成\programs\web.browser\app
开发公共目录\public
中的所有文件现在都可以通过http://domain.tld/file-in-public-directory.jpg
当我将一个新文件放入已编译的公共目录并尝试在浏览器中查看它时,我得到一个错误,即Meteor没有该url的路由。当我在开发公共目录中这样做时,它工作得完美无缺,但在编译后的(meteor build app
)中却不行
我需要这个,因为我想上传该目录中的新文件
有什么帮助吗?很高兴看到有人在尝试流星。这是很棒的东西,但同时,它看起来确实很复杂。真正帮助我这么多的是使用这个应用程序:。我现在在处理我的项目时会同时使用它。因此,您必须稍微调整一下它,但是有一种方法可以通过使用低级的
connectHandlers
对象访问您想要的几乎任何文件夹,尤其是静态文件
下面是一个示例,其中您有一个名为.images的文件夹(从Meteor自动刷新中隐藏),每当向…发出请求时,该文件夹都会提供图像服务
您正在使用正则表达式来确定传入请求是否正在尝试访问/images/。如果是,我们将使用res.write()
有两点值得注意:
1-使用Npm.require('fs')
,不需要使用任何特殊的东西(没有包等),因为它是内置的并且可用
2-使用fs.readFileSync
有点麻烦,而且是阻塞。你会想把它调整成一个性能卓越的生产应用程序
希望这有帮助!可以找到有关connectHandlers
的更多信息
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();
}
});