Express.js - 以任何方式显示文件/目录列表?

bal*_*ton 36 node.js express

使用Express.js有一种方法来显示像apache一样的文件/目录列表,当你访问没有索引文件的目录的URL时 - 所以它显示所有目录内容的列表?

是否存在我不知道的扩展或包裹?或者我自己要编码吗?

干杯们,你摇滚!:)

yon*_*ran 44

有一个全新的默认Connect中间件名为directory(),用于目录列表.它有很多风格,并有一个客户端搜索框.

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);
Run Code Online (Sandbox Code Playgroud)

  • 我建议编辑因我理解的原因而被拒绝.>由于表达式为3.x`express.createServer()`已弃用,应替换为`express()`.(有关详细信息,请参阅[change log](https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x) (12认同)
  • 目录中间件已经拆分,现在可以在这里找到:https://github.com/expressjs/serve-index (9认同)
  • 该链接现在是404 (5认同)

jbl*_*bll 39

从Express 4.x开始,目录中间件不再与express捆绑在一起.您需要下载npm模块serve-index.

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

    var serveIndex = require('serve-index');

    app.use(express.static(__dirname + "/"))
    app.use('/videos', serveIndex(__dirname + '/videos'));
Run Code Online (Sandbox Code Playgroud)


Tal*_*Kit 13

以下代码将同时提供目录和文件

var serveIndex = require('serve-index');
app.use('/p', serveIndex(path.join(__dirname, 'public')));
app.use('/p', express.static(path.join(__dirname, 'public')));
Run Code Online (Sandbox Code Playgroud)

  • 这是一件值得呼吁的重要事情!在接受的答案中,文件是可访问的并不是很明显,因为“serveIndex”根位于静态根之下。谢谢! (2认同)

Xin*_*Xin 8

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

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
Run Code Online (Sandbox Code Playgroud)

  • 效果很好,谢谢!您还可以对图标执行“serveIndex('files', {icons: true})”。 (2认同)