javascript - 从响应正文下载文件

标签 javascript html ajax

我有一个写入 GET 请求响应正文的服务。写入的数据可以是 PDF 文件或 XLSX 文件。

我的问题是,当我使用 Google Chrome 浏览器发出请求时,文件会被下载。但是,当我使用 postman 进行相同的调用时,我只在响应正文中收到一些乱码(我猜响应是压缩字节),并且无法下载文件。

这里我展示了在向 Controller 发出请求后下载文件的方法:

我的 Ajax 调用:

 $.ajax({
                    url: request_url,
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    data: JSON.stringify(searchCriteria),
                    success: function (response) {
                        swal("SWEET");
                    },
                    error: function (err) {
                        swal(JSON.stringify(err));
                    }
                });

在服务中我设置响应内容和类型如下:

        response.setContentType(contentType);
        // Assign the byte stream's size
        response.setContentLength(baos.size());

        //Write to response stream
        Writer.write(response, baos);

我通过 Ajax 调用发出请求,并得到与 postman 相同的响应,有没有办法下载这些字节返回到 Ajax?

谢谢。

最佳答案

我发现了问题所在,当我从 Google Chrome 发出请求时,该请求是一个定向到不同 Controller 的 GET 请求。另一方面,使用 Postman 发出的请求是指向不同 Controller 的 POST 请求。

鉴于响应 header 中提到了 GET 请求响应的内容,可以将其作为文件下载。

但是 POST 的内容却没有。我相信,因为正如 Archer 的评论中提到的,POST 并不意味着触发任何下载。

关于javascript - 从响应正文下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58376023/

相关文章:

html - CSS 帮助 : text positioning over image

javascript - 使用 css 中的变量控制 Sprite 图像坐标

html - div 溢出被隐藏,但仍然可以使用键盘右箭头键滚动

javascript - 如何使 Canvas 绘图完全填满浏览器?

javascript - 按字母顺序排序结果列表 : with MongoDB or JavaScript client?

javascript - 对数组中每个对象进行多个异步操作产生意外结果

Javascript 不检查组合网格更改的文本输入值

java - 是否可以在不包含 Google Script 的情况下通过 google plus SignIn 检索用户信息

javascript - 使用 AJAX 将内容加载到 jQuery UI 对话框

php - 数据表 AJAX - 传递数组