如果下载失败,30 秒后关闭 BufferedOutputStream 输出
Close BufferedOutputStream output after 30 seconds if download fails
单击“下载”后,我的代码开始在新打开的选项卡中从 SAN 位置写入内容 window,完成后,将 PDF 下载到本地系统。如果文件在 30 秒内最多 writes/downloaded,我想关闭新选项卡 window。然后在父 window JSP 上显示一条短信。我的 servlet 代码如下:
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';
}
您可以使用 sendRedirect 从您的 servlet 到您的 JSP 的副本,然后自动关闭 JSP。 sendRedirect 将关闭 servlet,然后副本 JSP 将通过 window.close 方法关闭。焦点回到你的主 JSP.
单击“下载”后,我的代码开始在新打开的选项卡中从 SAN 位置写入内容 window,完成后,将 PDF 下载到本地系统。如果文件在 30 秒内最多 writes/downloaded,我想关闭新选项卡 window。然后在父 window JSP 上显示一条短信。我的 servlet 代码如下:
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';
}
您可以使用 sendRedirect 从您的 servlet 到您的 JSP 的副本,然后自动关闭 JSP。 sendRedirect 将关闭 servlet,然后副本 JSP 将通过 window.close 方法关闭。焦点回到你的主 JSP.