node.js,express.js - 提供单个静态文件的最简单方法是什么?

时间:2012-07-13 15:31:01

标签: node.js express

我已经看过并使用了:

app.use("/css", express.static(__dirname + '/css'));

我不希望从根目录提供所有文件,只提供单个文件'ipad.htm'。使用express.js?

使用最少量的代码执行此操作的最佳方法是什么?

6 个答案:

答案 0 :(得分:88)

res.sendFile(path_to_file);就是你所需要的;它会自动设置正确的标题并传输文件(它在内部使用与express.static相同的代码。)

答案 1 :(得分:8)

app.use("/css/myfile.css", express.static(__dirname + '/css/myfile.css'));

答案 2 :(得分:4)

我发布了一个用于提供单个静态文件的小型库:https://www.npmjs.com/package/connect-static-file

npm install connect-static-file

var staticFile = require('connect-static-file'); app.use('/ipad', staticFile(__dirname + '/ipad.html'));

与express.static的主要区别在于它不关心请求url,如果路由匹配,它总是提供该文件。如果您为目录命名,它不会突然开始提供整个目录" ipad.html"。

答案 3 :(得分:1)

如果您只想提供单个静态文件,则可以使用以下语法(基于原始问题的示例,根目录下的ipad.htm):

app.use('/ipad.htm', express.static(__dirname, {index: 'ipad.htm'}));

express.static( dir )的默认行为是它将尝试从所需的 dir 发送“ index.html”文件。 index 选项将覆盖此行为,并让您选择想要的文件。

答案 4 :(得分:0)

基于JoWie答案的快速示例:

npm install connect-static-file

npm install express

var express = require('express');
var staticFile = require('connect-static-file');

var path = 'pathto/myfile.txt';
var options = {};
var uri = '/';
var app = express();
var port = 3000;

app.use(uri, staticFile(path, options));

app.listen(port, () => console.log(`Serving ${path} on localhost:${port}${uri}`));

答案 5 :(得分:-3)

 fs.createReadStream(path).pipe(res);
相关问题