快速访问父文件夹

Express parent folder access

本文关键字:文件夹 访问      更新时间:2023-09-26

嗨,伙计们,我正在研究这个快速应用程序。在我的快速文件的顶部,我写了这一行,因为我所有的静态文件都位于我的工作目录中:

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));

通常,在发送位于应用代码之外的文件时,应非常小心。

希望这有帮助!