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

Java 使用Ajax下载并打开PDF文件

朱天逸
2023-03-14
问题内容

我有一个生成PDF的动作类。该contentType适当地设定。

public class MyAction extends ActionSupport 
{
   public String execute() {
    ...
    ...
    File report = signedPdfExporter.generateReport(xyzData, props);

    inputStream = new FileInputStream(report);
    contentDisposition = "attachment=\"" + report.getName() + "\"";
    contentType = "application/pdf";
    return SUCCESS;
   }
}

我action 通过Ajax调用来称呼它。我不知道将流传输到浏览器的方法。我尝试了几件事,但没有任何效果。

$.ajax({
    type: "POST",
    url: url,
    data: wireIdList,
    cache: false,
    success: function(response)
    {
        alert('got response');
        window.open(response);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) 
    {
        alert('Error occurred while opening fax template' 
              + getAjaxErrorString(textStatus, errorThrown));
    }
});

上面给出了错误:

Your browser sent a request that this server could not understand.

问题答案:

你不必为此使用Ajax。只是一个<a>环节是不够的,如果你设置content-dispositionattachment服务器端代码。这样,如果你最关心的是父页面将保持打开状态(为什么你会为此而不必要地选择Ajax?)。此外,没有办法很好地同步处理这个问题。PDF不是字符数据。它是二进制数据。你不能做类似的事情$(element).load()。你想要对此使用全新的请求。对于那<a href="pdfservlet/filename.pdf">pdf</a>是完全合适的。

为了在服务器端代码方面为你提供更多帮助,你需要更多地介绍所使用的语言并发布代码尝试的摘录。



 类似资料:
  • 问题内容: 我有一个生成PDF的动作类。该适当地设定。 我 通过Ajax调用来称呼它。我不知道将流传输到浏览器的方法。我尝试了几件事,但没有任何效果。 上面给出了错误: 您的浏览器发送了该服务器无法理解的请求。 问题答案: 您不必为此使用Ajax。只是一个环节是不够的,如果你设置到服务器端代码。这样,如果您最关心的是父页面将保持打开状态(为什么您会为此而不必要地选择Ajax?)。此外,没有办法很好

  • 问题内容: 我想下载一个jQueryajax响应的pdf文件。Ajax响应包含pdf文件数据。。我的代码在下面给出,但是我总是得到一个空白的pdf。 问题答案: jQuery使用AJAX请求加载二进制数据时存在一些问题,因为它尚未实现某些HTML5 XHRv2功能 鉴于此,您拥有以下两种解决方案之一: 第一个解决方案是放弃JQuery并使用XMLHTTPRequest 与本地HTMLHTTPReq

  • 本文向大家介绍Android 下载并打开PDF,Doc,Dwg文档实例,包括了Android 下载并打开PDF,Doc,Dwg文档实例的使用技巧和注意事项,需要的朋友参考一下 今天项目中遇到这样一个需求 ,根据后台接口里pdf,doc,dwg文档的地址 是一个URL ,需要根据文档的url 下载到本地(内部存储或内存卡)并用手机中能打开该文档的软件弹出来并打开,(这里需要做一个缓存,第一次查看这个

  • A)有没有一种方法可以下载在Chrome中使用脚本显式打开的PDF?B)有没有一种方法可以从打开的网页中提取URL,然后反馈到程序中下载?

  • 问题内容: 我正在尝试使浏览器下载从ajax响应接收到的pdf文件。 受jquery ajax下载pdf文件启发,我模拟了如下单击/下载事件: 不幸的是,这仅适用于Chrome,不适用于Firefox + IE。当我尝试在最后两个浏览器中触发它时,没有任何反应。 由于从CMS继承,脚本和标记被放置在iframe中,但是我不确定这是否有影响。 关于如何针对所有现代浏览器进行优化的想法? 问题答案:

  • 问题内容: 如何为应用添加 PDF文件 ,您可以单击一个按钮查看该文件,完成后又回到原来的屏幕? 问题答案: 如果您只想查看PDF文件,则可以将其加载到UIWebView中。 斯威夫特4.1: 如果您想实现更多目标,最好使用PSPDFKit框架。