无法查看流星 public 目录中的新文件
Can't view new files in meteors public directory
当流星应用程序被编译(meteor build app
)时,public 目录 becomes \programs\web.browser\app
开发 public 目录 \public
中的所有文件都是现在可以通过 http://domain.tld/file-in-public-directory.jpg
访问
当我将新文件放入已编译的 public 目录并尝试在浏览器中查看它时,出现错误,提示 Meteor 没有该 url 的路由.当我在开发 public 目录中执行此操作时,它可以完美运行,但在编译 (meteor build app
).
中却不行
我需要这个,因为我想在该目录中上传新文件。
有什么帮助吗?
很高兴看到人们在那里尝试流星。这是很棒的东西 - 但与此同时,它看起来确实很复杂。真正帮助我的是使用这个应用程序:metoer-kitchen。我现在在处理我的项目时使用它。
所以,您必须稍微调整一下,但是有一种方法可以访问几乎任何您想要的文件夹,特别是对于静态文件,通过使用低级别 connectHandlers
object.
这是一个示例,您有一个名为 .images 的文件夹(对 Meteor auto-refresh 隐藏),只要向 http://[yoursiteURL]/images/...[=18= 发出请求,它就会提供图像]
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/。如果是,我们将发送带有适当 headers 的图像,使用 res.write()
注意两点:
1- 您不必使用任何特殊的东西(没有包等)来使用 Npm.require('fs')
,因为它是内置的并且可用。
2- 使用 fs.readFileSync
有点麻烦,而且会阻塞。您需要对其进行调整以获得高性能的生产应用程序。
希望对您有所帮助!有关 connectHandlers
的更多信息,请参见 here。
当流星应用程序被编译(meteor build app
)时,public 目录 becomes \programs\web.browser\app
开发 public 目录 \public
中的所有文件都是现在可以通过 http://domain.tld/file-in-public-directory.jpg
当我将新文件放入已编译的 public 目录并尝试在浏览器中查看它时,出现错误,提示 Meteor 没有该 url 的路由.当我在开发 public 目录中执行此操作时,它可以完美运行,但在编译 (meteor build app
).
我需要这个,因为我想在该目录中上传新文件。
有什么帮助吗?
很高兴看到人们在那里尝试流星。这是很棒的东西 - 但与此同时,它看起来确实很复杂。真正帮助我的是使用这个应用程序:metoer-kitchen。我现在在处理我的项目时使用它。
所以,您必须稍微调整一下,但是有一种方法可以访问几乎任何您想要的文件夹,特别是对于静态文件,通过使用低级别 connectHandlers
object.
这是一个示例,您有一个名为 .images 的文件夹(对 Meteor auto-refresh 隐藏),只要向 http://[yoursiteURL]/images/...[=18= 发出请求,它就会提供图像]
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/。如果是,我们将发送带有适当 headers 的图像,使用 res.write()
注意两点:
1- 您不必使用任何特殊的东西(没有包等)来使用 Npm.require('fs')
,因为它是内置的并且可用。
2- 使用 fs.readFileSync
有点麻烦,而且会阻塞。您需要对其进行调整以获得高性能的生产应用程序。
希望对您有所帮助!有关 connectHandlers
的更多信息,请参见 here。