当前位置: 首页 > 面试题库 >

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

谭山
2023-03-14
问题内容

我是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();

    }
}

我的AJAX调用如下:

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

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


问题答案:

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

如果您想点击下载文件,则只需将其添加hrefa标签中即可。或使用文件的打开一个新窗口URL



 类似资料:
  • 我想从网站上下载一份PDF。PDF需要在代码中生成,我认为这是freemarker和像iText这样的PDF生成框架的组合。还有更好的办法吗? 然而,主要的问题是,我不知道如何允许用户通过Spring控制器下载文件?

  • 问题内容: 我试图在我自己的函数中使用jQuery ajax调用的返回值,但它始终返回未定义的值。 ajax调用绝对有效,因为当我取消注释警报时,我得到了正确的返回,并且可以在firebug中看到它。我在做蠢事吗? 问题答案: AJAX调用是异步的-这意味着AJAX请求是按常规程序执行顺序发出的,并且在您的程序中这意味着不会将数据返回警报。 您不能以这种方式使用调用的返回值,而是将利用AJAX返回

  • 问题内容: 我正在使用GWT作为Web开发框架。我需要从我的GWT客户端代码访问一些REST服务。我还需要解析JSON(或XML),这是这些服务的响应格式。哪个是解决此问题的最佳方法? 提前致谢。 问题答案: 您可以使用标准GWT调用REST服务(或者如果需要在另一个域上调用服务)。 随着JSON响应字符串,你可以调用获得,它可以是一个,等等,这是在所有可用的这个包。

  • 问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电:

  • 问题内容: 我有一个URL,用于保存我的工作中的一些项目,它们大部分是MDB文件,但也有一些JPG和PDF。 我需要做的是列出该目录中的每个文件(已完成)并为用户提供下载它的选项。 使用PHP如何实现? 问题答案: 要读取目录内容,可以使用readdir()并使用脚本(在我的示例中)来下载文件 在其中,您可以强制浏览器发送下载数据,并使用basename()来确保客户端不会传递其他文件名,例如

  • 问题内容: 嗨,我有一堆.mp3文件,我想与NSFileManager一起使用并存储在documents文件夹中。有没有一种方法可以在线下载.mp3文件,然后将其保存到documents文件夹?这就是我正在使用的本地文件。 问题答案: 编辑/更新: Xcode 11.5•Swift 5.2 原始答案 Xcode 8.3.2•Swift 3.1