表示父文件夹访问

嗨,大家好我正在这个明确的应用。 在我的快速文件的顶部,我写了这一行,因为我所有的静态文件都位于我的工作目录中:

app.use(express.static(__dirname)); 

现在我想发送一个文件存在于当前文件夹的父文件夹中:

 app.get('/test', function(req, res) { res.sendFile("../../test.html"); }); 

它没有为我工作,通常是因为所有的静态文件必须存在于上面的目录defind,我可以做一个例外,使我的代码工作?

express.staticres.sendFile彼此不知道任何事情。 他们碰巧分享了很多相同的内部结构,但并不是真正相关的。

你可以把test.html放在你想要的地方,然后用Node的内置path模块引用它。 例如,如果你的文件结构如下所示:

 test.html real-app/ ├── app.js ├── node_modules/ └── package.json 

然后你可以发送test.html像这样:

 var path = require('path'); // ... app.get('/test', function(req, res) { var testHtmlPath = path.resolve(__dirname, '..', '..', 'test.html'); res.sendFile(testHtmlPath); }); 

PS:我不会推荐你发送静态文件的方式。 从与您的应用程序代码(这是__dirname含义)相同的目录提供文件可能会导致代码泄露 ,黑客可以利用这些代码来利用代码中的问题。 例如,如果黑客访问了这个URL:

http://yourapp.com/app.js

他们将能够看到app.js ,它具有您的应用程序的所有代码。 你不想透露给黑客! 他们也可以导航到像/secret-passwords.json或其他类似文件的路线。

通常情况下,静态文件被放置在一个特殊的目录,通常被称为staticpublic 。 你可以像这样从这个目录提供文件:

 var path = require('path'); // ... var staticFilesPath = path.resolve(__dirname, 'public'); app.use(express.static(staticFilesPath)); 

一般来说,您应该非常小心地发送生活在应用程序代码之外的文件。

希望这可以帮助!