Java outputstream,在从数据库检索到所有数据之前触发文件下载
Java outputstream, trigger file download before all data retrieved from db
我正在努力思考 Java Out/Inputstreams,关闭并冲洗。我有一种情况,我想使用来自服务器的数据使用 Apache POI 创建一个文件。我希望文件在我从数据库中检索到第一条记录后立即开始下载(在浏览器底部显示文件已开始下载)。
public void createExcelFile(final HttpServletResponse response,
final Long vendorId) {
try {
// setup responses types...
final XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
final XSSFSheet sheet = xssfWorkbook.createSheet("sheets1");
// create file with data
writeExcelOutputData(sheet, xssfWorkbook);
xssfWorkbook.write(response.getOutputStream());
xssfWorkbook.close();
}
catch (final Exception e) {
LOGGER.error("Boom");
}
以上代码可以毫无问题地执行文件下载,但这可能是一个大文件。我开始获取数据(大约 20/30 秒),然后开始下载 < 不好...
我能达到我的需要吗?最好的方法是什么,提前致谢
干杯:)
原因可能如下:
可能是你的http服务器read/write超时,然后如果进程变长或者因为低带宽,那么连接将被服务器关闭。
确保过程(excel工作)完全完成,也许工作期间会有error/exception。
Jorge 的解决方案看起来很有前途。用户需要一次请求文件,然后服务器将在后台完成工作,然后用户检查工作进程并下载文件是否准备好,或者服务器通过电子邮件、网络通知等方式通知用户...
此外,您还可以将文件在服务器中的临时文件中保存一段时间,如果连接中断,服务器将响应生成的文件部分(省略发送的字节,就像正常文件下载一样)
保持连接活动以进行冗长的工作是不合逻辑的。
同样,如果 download/stream 文件快速(非常快)就绪,并且下载中断,可能是因为 read/write 服务器超时,或者网络非常糟糕。
我正在努力思考 Java Out/Inputstreams,关闭并冲洗。我有一种情况,我想使用来自服务器的数据使用 Apache POI 创建一个文件。我希望文件在我从数据库中检索到第一条记录后立即开始下载(在浏览器底部显示文件已开始下载)。
public void createExcelFile(final HttpServletResponse response,
final Long vendorId) {
try {
// setup responses types...
final XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
final XSSFSheet sheet = xssfWorkbook.createSheet("sheets1");
// create file with data
writeExcelOutputData(sheet, xssfWorkbook);
xssfWorkbook.write(response.getOutputStream());
xssfWorkbook.close();
}
catch (final Exception e) {
LOGGER.error("Boom");
}
以上代码可以毫无问题地执行文件下载,但这可能是一个大文件。我开始获取数据(大约 20/30 秒),然后开始下载 < 不好...
我能达到我的需要吗?最好的方法是什么,提前致谢
干杯:)
原因可能如下:
可能是你的http服务器read/write超时,然后如果进程变长或者因为低带宽,那么连接将被服务器关闭。
确保过程(excel工作)完全完成,也许工作期间会有error/exception。
Jorge 的解决方案看起来很有前途。用户需要一次请求文件,然后服务器将在后台完成工作,然后用户检查工作进程并下载文件是否准备好,或者服务器通过电子邮件、网络通知等方式通知用户...
此外,您还可以将文件在服务器中的临时文件中保存一段时间,如果连接中断,服务器将响应生成的文件部分(省略发送的字节,就像正常文件下载一样)
保持连接活动以进行冗长的工作是不合逻辑的。
同样,如果 download/stream 文件快速(非常快)就绪,并且下载中断,可能是因为 read/write 服务器超时,或者网络非常糟糕。