如何通过express.static记录请求的文件

时间:2015-03-31 12:37:47

标签: node.js express

这是我的代码

var express=require("express");
var app=express();
var port=8181;
app.use(express.static(__dirname));
app.listen(port);

正确提供静态文件

我想在请求扩展名为.xls的文件时记录

我怎样才能实现它?

3 个答案:

答案 0 :(得分:14)

path核心模块为您提供了处理此问题的工具。因此,只需将此逻辑放在静态中间件之前的中间件中,例如:

var express = require("express");
var path = require("path");

var app = express();
var port = 8181;

app.use(function (req, res, next) {
    var filename = path.basename(req.url);
    var extension = path.extname(filename);
    if (extension === '.css')
        console.log("The file " + filename + " was requested.");
    next();
});
app.use(express.static(__dirname));

app.listen(port);

答案 1 :(得分:1)

只做

var express=require("express");
var app=express();
var port=8181;

app.use(function(req, res, next) {
    // check for .xls extension
    console.log(req.originalUrl);
    next();
}, express.static(__dirname));

app.listen(port);

答案 2 :(得分:1)

您想记录 serve-static express.static)给出的响应。有几种方法可以做到这一点。

方法Ⅰ一种用于手动检查的中间件。

如果在app.use之前,您可以放置​​(express.static)记录请求的中间件。 Rodrigo Medeiros' answer执行此操作。但是通过这种方式, serve-static 中间件的选项更改时,您必须重写检查代码,这可能是一个维护问题。

方法Ⅱ插入express.static;从中泄漏信息。

好吧,express.static知道它能提供最好的文件。不幸的是,它并没有让我们知道并记录它。但这有一个技巧:the setHeaders option,这是一个回调函数,据说可以用来设置自定义响应头。当express.static做出响应并获得足够的信息以记录您想要的内容时,就会调用它。

express.static