Java - 监视服务器中异步文件下载的进度

时间:2016-09-22 12:49:33

标签: java file rest download progress

我有一个服务器端应用程序,它将文件从外部URL下载到服务器中。这发生在异步进程上。我需要进行Ajax调用以获取文件下载进度并在UI中报告。

这可以通过在定义的时间间隔内将文件下载进度更新到DB中来实现,并且AJAX调用可以从数据库获得进展。但这将是数据库资源密集型的。

另一个选项(我不确定这是否有效)是读取正在进行的文件下载,以便将大小与总内容长度进行比较,以获得下载的%。

有没有办法从异步后台进程访问OutputStream并返回上传%?

应用程序的前端使用AngularJS,后端使用Spring Framework实现。

文件下载代码是通用的:

// opens input stream from the HTTP connection
InputStream inputStream = httpConn.getInputStream();
String saveFilePath = saveDir + File.separator + fileName;

// opens an output stream to save into file
FileOutputStream outputStream = new FileOutputStream(saveFilePath);

int bytesRead = -1;
byte[] buffer = new byte[BUFFER_SIZE];
while ((bytesRead = inputStream.read(buffer)) != -1) {
    outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();

0 个答案:

没有答案