0
我想在我的node.js服务器上简单地提供静态文件。如果url栏中的路径链接到一个静态文件,我可以轻松地做到这一点。然而,如果即时通讯尝试列出目录内容,我需要使用node.js文件系统调用。我可以列出目录内容,但我想浏览每个级别并根据需要获取内容。 类似于apache的默认功能如果目录里面没有'index.html',它会列出所有的内容。如果在node.js中指定了目录路径,则列出目录内容
apache list directory contents
如何使一个简单的HTML页面,列出目录内容,可点击浏览并服务?
具体而言,我有一个日志文件夹,我想访问。并在该文件夹内是子目录,并分散各种日志。
继承人我到目前为止所尝试的。
//inside server.js
// serve any static file inside my logs folder
app.use('/logs', express.static('logs'));
// routes.js
var logger = require('../controllers/s3logs');
app.get('/listlogs', function (req, res) {
res.render('logpage', {logList : logger.findFiles()});
});
// controller s3logs.js
exports.findFiles = function(path)
exports.findFiles = function (path) {
if (path==undefined)
{
path='logs';
}
var fileArray = fs.readdirSync(path); //get array of objects inside root dir
var fileObjArray = [];
// iterate through each file found in the directory
// find stats, make an obj, and push to new array
fileArray.forEach(function(item, index){
const pathToItem = path+'/'+item ;
const stats = fs.statSync(pathToItem);
var fileObj = {
"name": item,
"path": pathToItem,
"isDir": stats.isDirectory(),
"size": stats.size,
"modified": stats.mtime
};
fileObjArray.push(fileObj);
});
return fileObjArray;
};
//logpage.html
<body>
<ul>
{% for file in loglist %}
<li {% if loop.first %} class="first"{% endif %}>
<a href= {{ file.path }}>{{ file.name }}</a>
</li>
{% endfor %}
</ul>
</body>
此代码工作,但我需要解决遍历另一个目录更深的路径。再次呼叫我的功能。我可以通过一个帖子请求解决这个问题,但我觉得这已经变得太复杂了...... 有什么建议吗?
你为什么试图重新发明轮子? https://www.npmjs.com/package/express-directory –
我最终使用了服务静态中间件。它解决了我的问题。 –