从响应主体下载文件

时间:2019-10-14 11:41:37

标签: javascript html ajax

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

我的问题是,当我使用Google Chrome浏览器发出请求时,文件已下载。但是,当我使用邮递员进行相同的呼叫时,我在响应正文中只得到一些乱七八糟的文字(我想响应是压缩字节),而我无法下载文件。

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

我的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?

谢谢。

1 个答案:

答案 0 :(得分:0)

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

GET请求响应的内容可以下载为文件,只要响应头中已提及即可。

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