Ajax调用从RESTful服务返回的下载文件

Mon*_*oon 12 ajax rest jquery

我是AJAX的新手.我正在使用AJAX向服务器发送请求.该服务返回一个文本文件.但是返回数据时不会出现下载框.返回文件的其余服务如下:

@Path("/examples")
public class ExampleCodesRest {


    @POST
    @Path("/getcode")
    @Produces(MediaType.TEXT_PLAIN)
    public Response getCodes(@Context ServletContext context){

        String in=context.getRealPath("/WEB-INF/reports.jrxml");
        File file=new File(in);

        ResponseBuilder response = Response.ok((Object) file);
        response.header("Content-Disposition",
            "attachment; filename=\"file_from_server.log\"");
        return response.build();

    }
}
Run Code Online (Sandbox Code Playgroud)

我的AJAX调用如下:

 $('a#link').click(function(event){
    event.preventDefault();
    $.ajax({
        url: '/reports/rest/examples/getcode',
        type: 'POST'
    });
}); 
Run Code Online (Sandbox Code Playgroud)

没有AJAX,文件下载成功.使用AJAX,它不会下载文件.请咨询.

fre*_*ish 17

建议很简单:你无法通过AJAX下载文件 - 这是一个安全策略.我的意思是你可以下载数据,但你不能从JavaScript端保存到磁盘.

如果你想下载的点击一个文件,那么你可以添加href到您a的标签.或者用文件打开一个新窗口URL.