【问题标题】:Express res.download() does not send the correct url to clientExpress res.download() 没有向客户端发送正确的 url
【发布时间】:2020-04-06 01:51:55
【问题描述】:

我想使用 res.download() 从服务器下载某些文件,但是当我触发 res.download 时,它不会将客户端带到正确的 url。需要下载的文件在一个静态设置的目录中。

这是我的相关后端代码:

app.get("/downloadfile", function(req,res){
    var file = req.query.file;
    var currentpath = req.query.currentpath;
    console.log("SENDING FILE: " + file + " at: " + currentpath);
    //file = file.substring(20, file.length)
    console.log(file);
    console.log(currentpath + "/" + file);
    res.download(currentpath + "/" + file, file);
})

这是我触发这段代码时的终端输出:

SENDING FILE: Matthew Haywood CV.pdf at: /media/pi/ELEMENTS B//Matt Haywood/Uni Work
Matthew Haywood CV.pdf
/media/pi/ELEMENTS B//Matt Haywood/Uni Work/Matthew Haywood CV.pdf

这表明提供给 res.download 函数的路径是正确的,前端代码没有任何问题,否则会出现错误。

这是触发此路由时 Safari 返回的内容:

为什么 res.download 直接指向 /path_to_file/your_file.pdf/ 而不是 server/path_to_file/your_file.pdf?

当我手动访问 url 时,文件下载没有问题,但使用 res.download() 时,它会转到错误的 url。

【问题讨论】:

    标签: javascript html css node.js express


    【解决方案1】:

    您只是需要添加一个位置标题:

    res.set({
        'Location': "url"
    });
    res.download(currentpath + "/" + file, file);
    

    【讨论】:

    【解决方案2】:

    我设法通过在客户端添加来让它工作:

    window.location = "http://" + window.location.host + link;
    

    在 AJAX 调用中。

    【讨论】:

      猜你喜欢
      • 2021-04-03
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      相关资源
      最近更新 更多