这是我的代码
var express=require("express");
var app=express();
var port=8181;
app.use(express.static(__dirname));
app.listen(port);
Run Code Online (Sandbox Code Playgroud)
它正确地提供静态文件
我想在请求扩展名为.xls的文件时进行记录
我怎么能实现它?
Rod*_*ros 15
该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);
Run Code Online (Sandbox Code Playgroud)
您想要记录serve-static ( express.static)给出的响应。有几种方法可以做到这一点。
您可以在, 之前放置 ( app.use) 一个记录请求的中间件(如果该请求是针对 , 的话)。罗德里戈·梅代罗斯的回答就是这样做的。但这样,当服务静态中间件的选项发生变化时,您必须重写代码进行检查,这可能是一个维护问题。express.staticexpress.static
express.static; 从中泄露信息。好吧,express.static知道它提供的文件最好。不幸的是,它只是不让我们知道并记录它。但这有一个技巧:option ,这是一个回调函数setHeaders,据说用于设置自定义响应标头。express.static当做出响应并获得足够的信息来记录您想要记录的内容时,就会调用它。
const express = require("express");\nconst path = require("path");\nconst app = express();\nconst asset_dir_path = "assets/";\n\napp.use(express.static(asset_dir_path, {\n index: false,\n setHeaders: (response, file_path, file_stats) => {\n // This function is called when \xe2\x80\x9cserve-static\xe2\x80\x9d makes a response.\n // Note that `file_path` is an absolute path.\n\n // Logging work\n const relative_path = path.join(asset_dir_path, path.relative(asset_dir_path, file_path));\n console.info(`@${Date.now()}`, "GAVE\\t\\t", relative_path);\n }\n}));\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
6328 次 |
| 最近记录: |