如果在文件传输过程中发生异常,如何告诉浏览器Jetty servlet下载失败?

时间:2014-05-14 11:50:17

标签: java download jetty

我有一个Jetty servlet,允许用户从我的内部文件存储中下载文件。 在这个servlet中,我将小块文件写入通过获取的输出流中 HttpServletResponse对象的getOutputStream()方法。写入此输出流时可能会抛出一些异常。 文件传输的逻辑非常复杂,因此不仅在连接超时或用户关闭时都会出现异常。

问题是,当发生异常时,浏览器中没有向下载文件的用户显示错误消息。 看起来下载成功完成,但实际上只下载了文件的第一部分。

我想要的是将这样的下载标记为失败,因此浏览器会将此信息告诉用户。

首先想到的是捕获这样的异常并通过HttpServletResponse对象的sendError方法发送错误, 或发送重定向到错误页面。不幸的是,它不起作用,因为只有在提交响应之前才能调用sendError方法, 否则抛出IllegalStateException。在响应输出流的第一次刷新后,响应已经被提交。

所以,我的问题是如何在提交响应后写入HttpServletResponse输出流时发生异常时告诉浏览器文件下载失败?

0 个答案:

没有答案