【问题标题】:Start download file in browser with asyncronous call使用异步调用在浏览器中开始下载文件
【发布时间】:2019-01-30 02:28:29
【问题描述】:

我使用以下路线来创建一个 excel 文件。 Excel 已正确创建,并在根文件夹中创建,我正在使用的 template.xlsx 也是在其中。

app.get('/proceso/:id', function(req, res)
{
            res.download( __dirname + "/report.xlsx")
});

如果我直接在浏览器中调用路由,例如 localhost:7555/proceso/2 会生成文件并自动开始下载。

我想使用ajax get请求来调用路由,

函数reporte_excel(idp){

$.ajax({
type : "GET",
contentType : "application/json",
url : "/proceso/"+ idp,
success: function (data)
    {


    }
});

};

现在文件已生成,但没有开始下载。有没有办法在ajax成功的客户端开始下载?或者应该如何在服务器端开始下载?

【问题讨论】:

  • 看起来这已经被回答了。请看看这个question

标签: javascript node.js ajax download get


【解决方案1】:

试试

window.location = "URL to your file download script"

【讨论】:

  • 当我使用 window.location = "report.xlsx";我收到以下错误无法获取 /report.xlsx
【解决方案2】:

要使用res.download( __dirname + "/public/report.xlsx") 开始下载,它必须与声明为app.use(express.static(__dirname + '/public')) 的文件夹匹配

所以生成excel文件时必须在对应的文件夹中生成。

在我的情况下是这样的

workbook.toFileAsync("./public/report.xlsx").then(() => {
            res.download( __dirname + "/public/report.xlsx")
          })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 2014-10-27
    • 2012-07-04
    • 1970-01-01
    相关资源
    最近更新 更多