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