Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t查看meteors公共目录中的新文件_Javascript_Meteor_Upload_Public - Fatal编程技术网

Javascript Can';t查看meteors公共目录中的新文件

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应用程序被编译时(
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();
  }
});