使用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-
disposition到attachment
服务器端代码。这样,如果您最关心的是父页面将保持打开状态(为什么您会为此而不必要地选择Ajax?)。此外,没有办法很好地同步处理这个问题。PDF不是字符数据。它是二进制数据。你不能做类似的事情$(element).load()
。您想要对此使用
请求。对于那<a href="pdfservlet/filename.pdf">pdf</a>
是完全合适的。
为了在服务器端代码方面为您提供更多帮助,您需要更多地介绍所使用的语言并发布代码尝试的摘录。
以上是 使用Ajax下载并打开PDF文件 的全部内容, 来源链接: utcz.com/qa/424809.html