Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript expressjs:从父目录发送文件_Javascript_Express_Sendfile - Fatal编程技术网

Javascript expressjs:从父目录发送文件

Javascript expressjs:从父目录发送文件,javascript,express,sendfile,Javascript,Express,Sendfile,我想使用expressjs的sendfile从脚本文件的父目录发送一个文件。我想做的是: app.get('/', function(req, res){ res.sendfile('../../index.html'); }); 我得到一个禁止的错误,因为显然,sendfile不信任路径遍历。到目前为止,我还不知道如何更改通过sendfile发送的文件的目录。有什么提示吗 编辑:我发布这篇文章时有点累了,事实上这很容易。我会把它放在这里,以防其他人偶然发现。sendfile有一个选项

我想使用expressjs的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中似乎不存在