html – 使用查询字符串表达res.sendFile()

我已经使用res.sendFile()成功实现了服务静态文件,但是如果我添加一些查询字符串它就不起作用.

例如.以下代码绝对正常.

res.sendFile(path.join(__dirname,'../public','/index.html'));

但如果我这样做,那就失败了

res.sendFile(path.join(__dirname,'/index.html?id=' + req.params.id));

res.sendFile(path.join(__dirname,'/index.html?id=123'));

然后我得到以下错误

ENOENT,stat '/Users/krishnandu/Documents/Project/public/index.html?id=123'

404

Error: ENOENT,stat '/Users/krishnandu/Documents/Project/public/index.html?id=123'
    at Error (native)

解决方法

您不能使用res.sendFile()传递查询字符串参数.您必须将文件路径指定为res.sendFile()中的第一个参数

语法是:

res.sendFile(path [,options] [,fn])

所以你能做的是,

>将查询字符串与路由一起使用,比如route1(参见下面的代码)
>在route1的GET方法中,使用res.sendFile()

app.get('/route1',function(req,res){
  res.sendFile(path.join(__dirname,'/index.html'));
});

res.redirect('/route1?id=123');

另见Express API documentation和0700和res.redirect.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些