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秒後顯示一條消息,表明我的下載失敗。 –