|
@@ -283,24 +283,17 @@ public class CoreRegisterBookPdfServiceImpl extends ServiceImpl<CoreRegisterBook
|
|
|
@Override
|
|
@Override
|
|
|
public void downLoad(JSONObject tempVo, HttpServletResponse response) {
|
|
public void downLoad(JSONObject tempVo, HttpServletResponse response) {
|
|
|
final String localPathPrefix = fileService.getLocalPathPrefix().getData();
|
|
final String localPathPrefix = fileService.getLocalPathPrefix().getData();
|
|
|
- ServletOutputStream out = null;
|
|
|
|
|
- ByteArrayOutputStream baos = null;
|
|
|
|
|
String localFileName = tempVo.get("localFileName").toString();
|
|
String localFileName = tempVo.get("localFileName").toString();
|
|
|
- File file = FileUtils.getFile(localFileName);
|
|
|
|
|
|
|
+ File file = new File(localFileName);
|
|
|
|
|
+
|
|
|
if (!file.exists()) {
|
|
if (!file.exists()) {
|
|
|
response.setStatus(HttpStatus.NOT_FOUND.value());
|
|
response.setStatus(HttpStatus.NOT_FOUND.value());
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- try {
|
|
|
|
|
- out = response.getOutputStream();
|
|
|
|
|
- baos = new ByteArrayOutputStream();
|
|
|
|
|
- InputStream in = Files.newInputStream(file.toPath());
|
|
|
|
|
- byte[] buffer = new byte[1024];
|
|
|
|
|
- int len = 0;
|
|
|
|
|
- while ((len = in.read(buffer)) > -1) {
|
|
|
|
|
- baos.write(buffer, 0, len);
|
|
|
|
|
- }
|
|
|
|
|
- baos.flush();
|
|
|
|
|
|
|
+
|
|
|
|
|
+ try (InputStream in = new FileInputStream(file);
|
|
|
|
|
+ ServletOutputStream out = response.getOutputStream()) {
|
|
|
|
|
+
|
|
|
response.setContentType("application/octet-stream");
|
|
response.setContentType("application/octet-stream");
|
|
|
localFileName = localFileName.replace(localPathPrefix + File.separator, "");
|
|
localFileName = localFileName.replace(localPathPrefix + File.separator, "");
|
|
|
final BoundValueOperations<String, String> ops = redisTemplate.boundValueOps(URLDecoder.decode(localFileName, "UTF-8"));
|
|
final BoundValueOperations<String, String> ops = redisTemplate.boundValueOps(URLDecoder.decode(localFileName, "UTF-8"));
|
|
@@ -310,22 +303,16 @@ public class CoreRegisterBookPdfServiceImpl extends ServiceImpl<CoreRegisterBook
|
|
|
if (header.matches("[a-zA-Z0-9._\\-]+")) {
|
|
if (header.matches("[a-zA-Z0-9._\\-]+")) {
|
|
|
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, header);
|
|
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, header);
|
|
|
}
|
|
}
|
|
|
- response.setContentLength(baos.size());
|
|
|
|
|
- baos.writeTo(out);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ byte[] buffer = new byte[1024];
|
|
|
|
|
+ int len;
|
|
|
|
|
+ while ((len = in.read(buffer)) != -1) {
|
|
|
|
|
+ out.write(buffer, 0, len);
|
|
|
|
|
+ }
|
|
|
out.flush();
|
|
out.flush();
|
|
|
|
|
+
|
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
|
- throw new RuntimeException(e);
|
|
|
|
|
- } finally {
|
|
|
|
|
- try {
|
|
|
|
|
- if (out != null) {
|
|
|
|
|
- out.close();
|
|
|
|
|
- }
|
|
|
|
|
- if (baos != null) {
|
|
|
|
|
- baos.close();
|
|
|
|
|
- }
|
|
|
|
|
- } catch (IOException e) {
|
|
|
|
|
- throw new RuntimeException(e);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ throw new RuntimeException("Error during file download", e);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|