在我的nodejs app中,我有一个静态路径“/ public”,其结构如下:
-public
-images
-js
-posts
-2017
-07
-08
-09
如您所见,我每年和每月都会创建一个文件夹来存储文件。
现在,当我从视图中链接文件时,我可以看到路径 /posts/2017/09/file.txt ,我不想显示这个
有没有办法设置假路径(可能有params)以隐藏我的文件夹结构?
答案 0 :(得分:3)
对于像/files?date=2017-09
这样的网址,您可以执行以下操作:
const path = require('path');
// handle routes like this: /files?date=2017-09
app.get('/files', function(req, res) {
let date = req.query.date;
// if no date or if it contains illegal characters, then disallow it
// this is important to prevent injection of weird paths and ../../ stuff
if (!date || /[^\d-]/.test(date)) {
return res.status(404).end();
}
// I'm not sure what your root path is here, so replace /public with
// whatever that is supposed to be
let file = path.join('/public/posts', date.replace("-", path.sep));
res.sendFile(file, {dotfiles: "deny"}, function(err) {
if (err) {
res.status(404).end();
}
});
});