您可以从直接连接到浏览器(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;
}
但是,成功下载后,用户可能无法在浏览器中看到PDF的可能性很小。从浏览器确认将是最好的方法。如果PDF直接由浏览器显示,则无法执行此操作。您必须使用某种Javascript PDF查看器,并在显示时添加对服务器的回调。