通过异步调用开始在浏览器中下载文件

时间:2019-01-30 02:28:29

标签: javascript node.js ajax download get

我使用以下途径创建一个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成功内的客户端上开始下载?还是应该在服务器端开始下载?

2 个答案:

答案 0 :(得分:0)

尝试

.concat

答案 1 :(得分:0)

要使用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")
          })