用于使用express和Node.JS下载文件-6ren"> 用于使用express和Node.JS下载文件-对于 Apache,这确实很容易,但是对于 Node.JS,我不这么认为。简而言之,我希望当用户单击这样的内容时: ,他开始下载文件。当我这样做时,我会被重定向到 http://foo.com/fir-6ren">
gpt4 book ai didi

node.js - 用于使用express和Node.JS下载文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:49 25 4
gpt4 key购买 nike

对于 Apache,这确实很容易,但是对于 Node.JS,我不这么认为。简而言之,我希望当用户单击这样的内容时:<a href="/dir/file.png"> ,他开始下载文件。当我这样做时,我会被重定向到 http://foo.com/fir/file.png ,然后我想象这张照片。还要说我在应用程序中配置了这个 app.use(express.static(__dirname + '/public')); ,因此,该文件位于公共(public)路径中,并且公共(public)路径被声明为静态。而且,当用户点击时,我不希望他被重定向,然后开始下载。

我知道这是可能的,只需单击链接即可开始下载!但我不知道该怎么做。

谢谢您的提前!

编辑:

HTML 中 <a href=""> 的位置下载地址:

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.get ?如果我这样做,我会被重定向吗?我正在尝试在不被重定向的情况下执行此操作。

最佳答案

这取决于您随图像一起发送的 header 。

要使浏览器下载图像而不是显示图像,您需要设置一个“Content-Disposition:附件” header 。

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

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'));

关于node.js - <ahrerf =""> 用于使用express和Node.JS下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14758302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com