使用Ajax下载并打开PDF文件

我有一个生成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));

}

});

上面给出了错误:

您的浏览器发送了该服务器无法理解的请求。

回答:

您不必为此使用Ajax。只是一个<a>环节是不够的,如果你设置content-

dispositionattachment服务器端代码。这样,如果您最关心的是父页面将保持打开状态(为什么您会为此而不必要地选择Ajax?)。此外,没有办法很好地同步处理这个问题。PDF不是字符数据。它是二进制数据。你不能做类似的事情$(element).load()。您想要对此使用

请求。对于那<a href="pdfservlet/filename.pdf">pdf</a>是完全合适的。

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

以上是 使用Ajax下载并打开PDF文件 的全部内容, 来源链接: utcz.com/qa/424809.html

回到顶部