<;一个hrerf=”的&引用&燃气轮机;用于使用express和Node.JS下载文件

<;一个hrerf=”的&引用&燃气轮机;用于使用express和Node.JS下载文件,node.js,express,Node.js,Express,对于Apache,这真的很容易,但是对于Node.JS,我不这么认为。简单地说,我希望当用户单击如下内容时:,他开始下载文件。当我这样做时,我被重定向到http://foo.com/fir/file.png,我将照片可视化。也就是说,我已经在应用程序中配置了这个app.use(express.static(uu dirname+/public)),因此,文件位于公共路径中,并且公共路径声明为静态。而且,当用户点击时,我不希望他被重定向,然后开始下载 我知道这是可能的,只要点击一个链接,下载就开始

对于Apache,这真的很容易,但是对于Node.JS,我不这么认为。简单地说,我希望当用户单击如下内容时:
,他开始下载文件。当我这样做时,我被重定向到
http://foo.com/fir/file.png
,我将照片可视化。也就是说,我已经在应用程序中配置了这个
app.use(express.static(uu dirname+/public)),因此,文件位于公共路径中,并且公共路径声明为静态。而且,当用户点击时,我不希望他被重定向,然后开始下载

我知道这是可能的,只要点击一个链接,下载就开始了!但我不知道怎么做

谢谢你的预付款

编辑:

下载的
的HTML地址如下:

app.get('/:user/:id', function (req, res){

  usermodel.findOne({ user: req.params.user }, function (err, user){

   var imagen = user.imagen.id(req.params.id);

    if (err) throw err;

        res.render('photo.ejs', {
            user: user,
            photo: imagen,
        });
    });
});

是否需要创建新的
应用程序。是否获取
?如果我这样做,我会被重定向吗?我正在尝试在不重定向的情况下执行此操作。

这取决于您随图像发送的标题

要使浏览器下载图像而不是显示图像,需要设置
“内容处置:附件”
标题

由于您使用的是
静态
中间件,这比在您自己的请求处理函数中要复杂一些。您必须在静态中间件之前注入中间件

app.use(function(req, res, next) {
  if (req.path.split('/')[0] === "downloads")
    res.attachment(); //short for res.set('Content-Disposition', 'attachment')
  next();
});

app.use(express.static(__dirname + '/public'));

这取决于与图像一起发送的标题

要使浏览器下载图像而不是显示图像,需要设置
“内容处置:附件”
标题

由于您使用的是
静态
中间件,这比在您自己的请求处理函数中要复杂一些。您必须在静态中间件之前注入中间件

app.use(function(req, res, next) {
  if (req.path.split('/')[0] === "downloads")
    res.attachment(); //short for res.set('Content-Disposition', 'attachment')
  next();
});

app.use(express.static(__dirname + '/public'));

与@rdrey的回答类似,如果url中有
?dl
查询参数,则让浏览器下载一个文件

app.use('/gifs/*.gif', function(req, res, next) {
  if (req.query.dl !== undefined) res.attachment();
  next();
});

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

与@rdrey的回答类似,如果url中有
?dl
查询参数,则让浏览器下载一个文件

app.use('/gifs/*.gif', function(req, res, next) {
  if (req.query.dl !== undefined) res.attachment();
  next();
});

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

Content-Type:application/octet-stream
结合使用。posible-duplicate这可能有助于与
Content-Type:application/octet-stream
结合使用。posible-duplicate这可能有助于我认为这是整个目录的一个很好的解决方案。值得注意的是,express提供了为特定文件设置
Content Disposition
头的功能。我认为这对于整个目录来说是一个很好的解决方案。值得注意的是,express提供了为特定文件设置
Content Disposition
头的功能。