Javascript 如果在node.js中指定了目录路径,请列出目录内容
我只是尝试在node.js服务器上提供静态文件。如果url栏中的路径链接到一个静态文件,我可以很容易地做到这一点。但是,如果我试图列出目录内容,我需要使用node.js文件系统调用。我可以列出目录内容,但我想导航每个级别并根据需要获取内容。 与apache的默认功能类似,如果目录中没有“index.html”,它将列出所有内容 如何制作一个简单的html页面,列出目录内容,并可单击导航到和提供服务 特别是我有一个日志文件夹,我想访问。文件夹中有子目录和分散的各种日志 这是我到目前为止试过的Javascript 如果在node.js中指定了目录路径,请列出目录内容,javascript,node.js,apache,static,filesystems,Javascript,Node.js,Apache,Static,Filesystems,我只是尝试在node.js服务器上提供静态文件。如果url栏中的路径链接到一个静态文件,我可以很容易地做到这一点。但是,如果我试图列出目录内容,我需要使用node.js文件系统调用。我可以列出目录内容,但我想导航每个级别并根据需要获取内容。 与apache的默认功能类似,如果目录中没有“index.html”,它将列出所有内容 如何制作一个简单的html页面,列出目录内容,并可单击导航到和提供服务 特别是我有一个日志文件夹,我想访问。文件夹中有子目录和分散的各种日志 这是我到目前为止试过的 /
//inside server.js
// serve any static file inside my logs folder
app.use('/logs', express.static('logs'));
//logpage.html
{日志列表%中文件的%s}
-
{%endfor%}
这段代码正在运行,但我需要解析路径以深入遍历另一个目录。再次调用我的函数。我可以通过发帖请求来解决这个问题,但我觉得这已经变得太复杂了。。。
有什么建议吗?如果指定的路径是目录,则使用serve静态中间件为我自己的自定义html提供服务
var serveStatic = require('serve-static');
// serve static logs files
var serve = serveStatic('logs');
app.use('/logs', serve, function (req, res) {
// console.log(req)
res.render('logpage', {logList:s3logger.findFiles(req.originalUrl), currentPath: req.originalUrl} );
});
你为什么要重新发明轮子?我最终使用了服务静态中间件。它解决了我的问题。
// 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>
var serveStatic = require('serve-static');
// serve static logs files
var serve = serveStatic('logs');
app.use('/logs', serve, function (req, res) {
// console.log(req)
res.render('logpage', {logList:s3logger.findFiles(req.originalUrl), currentPath: req.originalUrl} );
});