0
点击下载后,我的代码开始在新打开的选项卡窗口中从SAN位置写入内容,完成后,将PDF下载到本地系统。如果文件在30秒内没有写入/下载到最前面,我想关闭新的标签页窗口。然后在父窗口JSP上显示一条文本消息。我的servlet代码如下:如果下载失败,在30秒后关闭BufferedOutputStream输出
try
{
GetPDAO getPDAO= new GetPDAO();
for(int i=0;i<5;i++)
{
content=getPDAO.getPFromE(strPN);
DateFormat df = new SimpleDateFormat("dd/MM/yy HH:mm:ss");
Date dateobj = new Date();
if(content==null)
{
Thread.sleep(5000);
}
else {
content=getPDAO.getPFromE(strPN);
break;
}
}
response.setContentType("application/pdf");
String strFileName=strPN+".pdf";
response.setHeader("Content-Disposition","attachment; filename=\"" + strFileName + "\"");
response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires", 0);
output =new BufferedOutputStream(response.getOutputStream());
output.write(content);
output.flush();
}
finally
{
output.close();
}
和下面我JSP代码:
function onSubmit()
{
var url="<%=strCCPURL%>"+"/getpfromeservlet?PN="+document.getElementById("pn").value;
document.getElementById('alrt').innerHTML='<b>Please wait</b>';
setTimeout(function() {document.getElementById('alrt').innerHTML='';},8000);
window.open(url,"_blank");
document.getElementById('viewPD').href=url;
document.getElementById('viewPD').target='_blank';
}
问题是?注意如果您想要30秒的超时时间,您为什么要设置8秒的超时时间? – EJP
一些滥用在这里downvote。如果你看到,8秒是针对不同的“请稍候”警告,然后隐藏(setTimeOut).Q是新的打开的标签在30秒后如何自动关闭 –
@EJP有人可以帮忙。我完全陷入困境。我的Q在contentType为(application/pdf)的servlet中,我可以写任何东西,以便我可以使用window.close关闭新打开的窗口,并将我的注意力转移回JSP。我想要做的就是在30秒后显示一条消息,表明我的下载失败。 –