Javascript 从响应主体下载文件

Javascript 从响应主体下载文件,javascript,html,ajax,Javascript,Html,Ajax,我有一个服务,它可以写入GET请求响应的主体。写入的数据可以是PDF文件,也可以是XLSX文件 我的问题是,当我使用Google Chrome浏览器提出请求时,文件会被下载。然而,当我使用postman进行相同的调用时,我只在响应体中得到一些乱七八糟的文字(我猜响应压缩了字节),并且我无法下载文件 在这里,我展示了我向控制器发出请求后下载文件的方法: 我的Ajax调用: $.ajax({ url: request_url,

我有一个服务,它可以写入GET请求响应的主体。写入的数据可以是PDF文件,也可以是XLSX文件

我的问题是,当我使用Google Chrome浏览器提出请求时,文件会被下载。然而,当我使用postman进行相同的调用时,我只在响应体中得到一些乱七八糟的文字(我猜响应压缩了字节),并且我无法下载文件

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

我的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调用发出请求,得到了与邮递员相同的响应,有没有办法将这些字节下载回Ajax?


谢谢。

我发现了问题所在,当我从谷歌浏览器发出请求时,请求是一个GET请求,直接指向另一个控制器。另一方面,与Postman一起发出的请求是指向不同控制器的POST请求

GET请求响应的内容可以作为文件下载,前提是响应头中提到了它


然而,这篇文章的内容并非如此。我相信这一点,因为正如阿彻在评论中提到的,帖子并不是为了触发任何下载

我发现了问题所在,当我从Google chrome发出请求时,该请求是一个GET请求,指向另一个控制器。另一方面,与Postman一起发出的请求是指向不同控制器的POST请求

GET请求响应的内容可以作为文件下载,前提是响应头中提到了它


然而,这篇文章的内容并非如此。我相信这一点,因为正如阿彻在评论中提到的,帖子并不是为了触发任何下载

您不能进行导致文件下载的Ajax调用。如果您想引起下载,那么您必须执行POST(在本例中),您的意思是使用Ajax以外的东西执行POST吗?如果是这样,如何下载?我想使用Ajax调用从应用程序内部下载它。我在请求中发送了一些其他数据,因此我使用POST请求,此请求返回一个包含所需文件字节的响应。创建表单元素,填充数据(搜索条件)并提交它。Ajax通常用于避免表单,但也有缺点,例如无法触发下载。您不能通过调用Ajax来下载文件。如果您想引起下载,那么您必须执行POST(在本例中),您的意思是使用Ajax以外的东西执行POST吗?如果是这样,如何下载?我想使用Ajax调用从应用程序内部下载它。我在请求中发送了一些其他数据,因此我使用POST请求,此请求返回一个包含所需文件字节的响应。创建表单元素,填充数据(搜索条件)并提交它。Ajax通常用于避免表单,但也有缺点,例如无法触发下载。