0

我想这只是一个简单的问题,但我无法自己解决。

(我正在使用 Express + NodeJS)

我想要的是一个目录列表,其中包含文件。这些文件应被链接,以便用户只需单击链接即可下载它们(如您获得的标准目录列表,例如,如果您有没有任何索引文件的 apache 服务器)。

列出我使用的目录内容

var fs = require('fs');
fs.readdir('./anydir', function(err, files){
    files.forEach(function(file){
        res.send(file);
    });
});

(注意:如您所见,我没有在此示例中包含任何错误处理)

现在我尝试通过修改来链接文件

res.send(file)

res.send('<a href=\"' + file + '\">' + file + '<br>');

但这只是打印出错误消息:

Cannot GET /anydir/File

...因为我没有处理 app.js 中的每个文件请求。

我怎样才能实现我上面提到的目标?

4

2 回答 2

1

只需使用express.directoryandexpress.static作为中间件,可能使用用户定义的中间件来设置Content-Disposition标题。

于 2013-01-31T04:16:46.170 回答
0

这对我有用:

var fs = require('fs');
fs.readdir('/var/', function(err, files){
    files.forEach(function(file){
        res.write('<a href=\"' + file + '\">' + file + '<br>');
    });
});

您将内容放在 write() 而不是 send() 中。试试这个,让我知道。我可以看到正确显示的文件列表。希望这对您有所帮助。

于 2013-01-30T14:56:54.627 回答