Javascript expressjs:从父目录发送文件
我想使用expressjs的sendfile从脚本文件的父目录发送一个文件。我想做的是:Javascript expressjs:从父目录发送文件,javascript,express,sendfile,Javascript,Express,Sendfile,我想使用expressjs的sendfile从脚本文件的父目录发送一个文件。我想做的是: app.get('/', function(req, res){ res.sendfile('../../index.html'); }); 我得到一个禁止的错误,因为显然,sendfile不信任路径遍历。到目前为止,我还不知道如何更改通过sendfile发送的文件的目录。有什么提示吗 编辑:我发布这篇文章时有点累了,事实上这很容易。我会把它放在这里,以防其他人偶然发现。sendfile有一个选项
app.get('/', function(req, res){
res.sendfile('../../index.html');
});
我得到一个禁止的错误,因为显然,sendfile不信任路径遍历。到目前为止,我还不知道如何更改通过sendfile发送的文件的目录。有什么提示吗
编辑:我发布这篇文章时有点累了,事实上这很容易。我会把它放在这里,以防其他人偶然发现。sendfile有一个选项参数,允许您这样做,如下所示:
app.get( '/', function( req, res ){
res.sendfile('index.html', { root: "../../"});
});
您需要使用
express.static
假设您已设置以下目录:
/app
/buried
/deep
server.js
/public
index.html
然后,您应该具有以下快速配置:
var express = require('express');
var server = express.createServer();
server.configure(function(){
server.use(express.static(__dirname + '../../public'));
});
server.listen(3000);
res.sendfile
用于将文件“细粒度”传输到客户端 必须将root作为sendfile()
的第二个参数
例如:
app.get('/:dir/:file', function(req, res) {
var dir = req.params.dir,
file = req.params.file;
res.sendfile(dir + '/' + file, {'root': '../'});
});
您可以在此处找到更多详细信息:
父文件夹:
-应用程序
-routes.js
-index.html
在上述情况下,将以下代码添加到routes.js以从父目录发送文件
var path=require("path") //assuming express is installed
app.get('/', function(req, res){
res.sendFile(path.join(__dirname + '/../index.html'));
});
对于服务器上的静态资源,还可以使用
express.static
。理想情况下,sendFile函数用于提供文件(客户端下载文件),而不是用于静态内容。configure
方法在Express 3中似乎不存在