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

问题描述 投票:44回答:5

我已经看到并利用了:

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

我不希望从根目录提供所有文件,只有一个文件'ipad.htm'。使用express.js,使用最少量的代码执行此操作的最佳方法是什么?

node.js express
5个回答
91
投票

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


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

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”,它不会突然开始提供整个目录。


0
投票

基于JoWie答案的快速示例:

npm install connect-static-file

npm安装快递

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}`));

-3
投票
 fs.createReadStream(path).pipe(res);
© www.soinside.com 2019 - 2024. All rights reserved.