2012-07-13 41 views

回答

-3
fs.createReadStream(path).pipe(res); 
+2

您需要事先至少明确写出“Content-Type”和“Content-Length”标头。 – ebohlman 2012-07-13 22:02:30

+0

另外,GZip压缩将无法正常工作。 – 2017-02-03 13:53:09

68

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

+1

一直在寻找这个约一个小时....这正是我需要的。谢谢! – 2013-03-29 02:14:32

+4

我从这得到403s。如果你的文件夹在运行的JS文件之外,我必须做'res.sendfile(relativePath,{root:theDirectory})' – kumar303 2014-03-12 18:22:07

+2

,我会向@ kumar303添加一些细节评论:你不能把“../”在relativePath中,但可以将其添加到目录中。 res.sendfile(pic.png,{root:__dirname +“../../../ images /”}) – Rayjax 2014-05-28 08:46:37

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

'app.use(“/”,express.static(__ dirname +“/index.html”)) '给我一个404。 'app.use(“/”,express.static(__ dirname))'工作。 – Niklas 2013-07-25 12:15:16

+1

这很奇怪,它确实对我有用。我有app.use('/',express.static(__ dirname +'/wwwroot/index.html'));我认为他们app.use调用的顺序确实有所帮助。所以请确保你没有将它映射到其他地方,这是给404。 – 2013-07-31 03:24:04

+2

我得到一些奇怪的303行为,指向路径加斜杠。看起来像静态只应该在dirs上工作。 – 2014-01-29 08:25:44

2

我出版了一间小型图书馆,服务单一的静态文件: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”,它不会突然开始提供整个目录。

相关问题