您可以从直接连接到浏览器的服务器(TCP连接的端点)获得一个非常好的主意.当用户取消下载或遇到任何网络问题时,服务器将出现IO错误.所以,如果你可以直接运行服务器(没有代理).你可以这样做,
try {
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
logger.info("PDF " + fileName + " sent successfully");
} catch (Exception e) {
logger.error("PDF " + fileName + " error: " + e.getMessage());
throw e;
}
Run Code Online (Sandbox Code Playgroud)
但是,成功下载后用户可能无法在浏览器中看到PDF.来自浏览器的ACK将是最好的方法.如果浏览器直接显示PDF,则无法执行此操作.您必须使用某种Javascript PDF查看器,并在显示时将回调添加回服务器.
除非出现网络错误,否则您无法知道。唯一的方法是让浏览器向服务器发送第二个事件(使用 AJAX)以确认下载已成功完成。
归档时间: |
|
查看次数: |
14727 次 |
最近记录: |