2011-06-09 73 views

回答

43

对于目录列表,有一个全新的默认Connect middleware named directorysource)。它有很多风格,并有一个客户端搜索框。

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); 
+2

它的工作非常美丽!好极了! – balupton 2011-06-30 00:43:48

+11

我提出了一个由于理解超出理由而被拒绝的编辑。 >由于express到3.x,'express.createServer()'被弃用,应该用'express()'替换。 (有关更多详细信息,请参阅[更改日志](https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x)) – 2013-10-17 15:14:41

+6

目录中间件已拆分出来,现在在这里找到︰https://github.com/expressjs/serve-index – gdw2 2014-08-08 20:00:02

28

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

然后,例如,在被称为videos应用程序的根目录显示在目录中的文件/目录列表看起来像:

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

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

感谢您使用最新的指针。赞赏。 – 2015-02-17 06:45:27

+0

谢谢你。额外的问题,如果我服务的文件夹(作为根),然后提供2个目录(位于其他地方)作为子文件夹,他们不会列出浏览根时。无论如何解决这个问题? – ianbeks 2015-10-02 09:02:30

+0

即服务索引不允许下载该文件,有没有什么办法从服务器下载文件索引 – ArUn 2016-06-02 06:09:46

12

下面的代码将成为这两个目录和文件

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

这是一个很重要的事情!在接受的答案中,文件是可访问的,因为“serveIndex”根在静态根下面。谢谢! – arichards 2016-05-12 15:48:37

+0

有没有一种方法使这个列表的时间顺序,而不是字母数字与此? – fbence 2016-05-17 13:16:44

+0

'serveindex'服务目录和文件没有这个额外的行,据我所知.. – 1252748 2016-10-19 15:41:16

3

这会为你做的工作:(新版本的express需要单独的中间件)。例如。你把你的文件放在文件夹'文件'下,并且你想要的网址是'/ 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 
+0

工作很好,谢谢! 您也可以为图标执行'serveIndex('files',{icons:true})''。 – gkiely 2017-11-29 02:43:06