如何链接NodeJS中的文件(+让用户点击它时下载文件)?

时间:2013-01-30 14:42:01

标签: node.js express

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

(我正在使用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中的每个文件请求。

如何实现上述目标?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

这对我有用:

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

你把内容写成write()而不是send()。 试试这个,让我知道。我可以看到正确显示的文件列表。 希望这会对你有所帮助。