关于node.js:Express.js – 显示文件/目录列表的任何方式?

Express.js - any way to display a file/dir listing?

对于express.js,有没有一种方法可以像Apache那样显示一个文件/目录列表,当您访问一个没有索引文件的目录的URL时,它会显示所有目录内容的列表?

有没有我不知道的分机或包裹?还是我要自己编码?

干杯,伙计们,你们好摇滚!:)


目录列表中有一个全新的默认连接中间件,名为directory(source)。它有很多样式,并且有一个客户端搜索框。

1
2
3
4
5
6
7
8
9
10
11
var express = require('express')
  , app = express.createServer();

app.configure(function() {
  var hourMs = 1000*60*60;
  app.use(express.static(__dirname + '/public', { maxAge: hourMs }));
  app.use(express.directory(__dirname + '/public'));
  app.use(express.errorHandler());
});

app.listen(8080);


从Express4.x开始,目录中间件不再与Express捆绑在一起。您将要下载NPM模块服务索引。

然后,例如,要在名为videos的应用程序根目录中显示文件/dir列表,如下所示:

1
2
3
4
    var serveIndex = require('serve-index');

    app.use(express.static(__dirname +"/"))
    app.use('/videos', serveIndex(__dirname + '/videos'));


以下代码将同时服务于目录和文件

1
2
3
var serveIndex = require('serve-index');
app.use('/p', serveIndex(path.join(__dirname, 'public')));
app.use('/p', express.static(path.join(__dirname, 'public')));


这将为您完成工作:(新版本的Express需要单独的中间件)。例如,您将文件放在文件夹"files"下,希望URL为"/public"

1
2
3
4
5
6
var express = require('express');
var serveIndex = require('serve-index');
var app = express();

app.use('/public', serveIndex('files')); // shows you the file list
app.use('/public', express.static('files')); // serve the actual files