【问题标题】:Download a pdf streamed by a java webservice (POST)下载由 java web 服务 (POST) 流式传输的 pdf
【发布时间】:2012-09-24 13:16:29
【问题描述】:

我有一个通过 POST 方法调用的网络服务:

  @Path("/ficheAction/")
  @POST
  @Consumes({ MediaType.APPLICATION_JSON })
  @Produces("application/pdf")
  public Response ficheAction(final ParamSyntheseFicheActionDto paramSyntheseFicheAction) throws EngineException {
  [...]
     return Response.ok(output.toByteArray(), "application/pdf")
        .header("content-disposition", "attachment; filename = " + name + ".pdf").build();
  }

此网络服务使用我的 js 中的参数(Json):

  [...]    
  $.ajax({
        url : webServiceUrl,
        // 
        type : "POST",
        // Content type to send to the server
        contentType : "application/json; charset=utf-8",
        data : pData,
        dataType : "json",
        success : pCallback,
        cache : false,
    });

网络服务可以正常工作,但在客户端,导航器无法打开文件 (pdf)。

我用 GET 而不是 POST(简化属性)进行了测试,它可以工作,但不能在 POST 中... 当我在 chrome 调试中查看 web 服务的响应时,我可以看到有一个以“%PDF-1.5”开头的响应...但是下载没有开始...

我做错了什么?

【问题讨论】:

    标签: java jquery web-services post


    【解决方案1】:

    你应该使用 GET 方法。

    要下载文件,不要使用 ajax,只需通过简单的链接调用您的网络服务。

    <a href="http://your-server.com/ficheAction">Download</a>
    

    或者使用那个简单的js脚本:

    window.open("http://your-server.com/ficheAction");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多