diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java index 5c713d793..8a8a98d7f 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java @@ -180,73 +180,73 @@ public class CommonController { * @param request * @param response */ -// @GetMapping(value = "/download/{id}") -// public void view(@PathVariable String id,HttpServletRequest request, HttpServletResponse response) { -// // 查询数据表数据是否存在 -// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); -// queryWrapper.eq(OSSFile::getId,id); -// OSSFile ossFile = ossFileService.getOne(queryWrapper); -// if( null == ossFile){ -// throw new JeroBootException("文件不存在.."); -// } -// String fileUrl = ossFile.getUrl(); -// InputStream inputStream = null; -// OutputStream outputStream = null; -// try { -// String fileName = ""; -// if(CommonConstant.UPLOAD_TYPE_LOCAL.equals(uploadType)){ -// //本地下载 -// String filePath = uploadpath + File.separator + fileUrl; -// File file = new File(filePath); -// if(!file.exists()){ -// response.setStatus(404); -// throw new RuntimeException("文件不存在.."); -// } -// // 文件名称 -// fileName = file.getName(); -// inputStream = new BufferedInputStream(new FileInputStream(filePath)); -// }else if(CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)){ -// // minio 下载 -// // 通过MinioUtil查询时 只需要桶后面的路径 -// String minioUrl = MinioUtil.getMinioUrl(); -// // Linux/unix 系统下文件路径分隔符为"/" 获取minio与存储桶的路径 -// minioUrl = minioUrl + MinioUtil.getBucketName() + "/"; -// String url = fileUrl.replace(minioUrl, ""); -// // 文件名称 -// fileName = ossFile.getFileName(); -// inputStream = MinioUtil.getMinioFile(MinioUtil.getBucketName(), url); -// } -// response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("UTF-8"),"iso-8859-1")); + @GetMapping(value = "/download/{id}") + public void view(@PathVariable String id,HttpServletRequest request, HttpServletResponse response) { + // 查询数据表数据是否存在 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OSSFile::getId,id); + OSSFile ossFile = ossFileService.getOne(queryWrapper); + if( null == ossFile){ + throw new JeroBootException("文件不存在.."); + } + String fileUrl = ossFile.getUrl(); + InputStream inputStream = null; + OutputStream outputStream = null; + try { + String fileName = ""; + if(CommonConstant.UPLOAD_TYPE_LOCAL.equals(uploadType)){ + //本地下载 + String filePath = uploadpath + File.separator + fileUrl; + File file = new File(filePath); + if(!file.exists()){ + response.setStatus(404); + throw new RuntimeException("文件不存在.."); + } + // 文件名称 + fileName = file.getName(); + inputStream = new BufferedInputStream(new FileInputStream(filePath)); + }else if(CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)){ + // minio 下载 + // 通过MinioUtil查询时 只需要桶后面的路径 + String minioUrl = MinioUtil.getMinioUrl(); + // Linux/unix 系统下文件路径分隔符为"/" 获取minio与存储桶的路径 + minioUrl = minioUrl + MinioUtil.getBucketName() + "/"; + String url = fileUrl.replace(minioUrl, ""); + // 文件名称 + fileName = ossFile.getFileName(); + inputStream = MinioUtil.getMinioFile(MinioUtil.getBucketName(), url); + } + response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("UTF-8"),"iso-8859-1")); // response.setContentType("application/force-download");// 设置强制下载不打开 -// outputStream = response.getOutputStream(); -// byte[] buf = new byte[1024]; -// int len; -// while ((len = inputStream.read(buf)) > 0) { -// outputStream.write(buf, 0, len); -// } -// response.flushBuffer(); -// } catch (IOException e) { -// log.error("预览文件失败" + e.getMessage()); -// response.setStatus(404); -// e.printStackTrace(); -// } finally { -// if (inputStream != null) { -// try { -// inputStream.close(); -// } catch (IOException e) { -// log.error(e.getMessage(), e); -// } -// } -// if (outputStream != null) { -// try { -// outputStream.close(); -// } catch (IOException e) { -// log.error(e.getMessage(), e); -// } -// } -// } -// -// } + outputStream = response.getOutputStream(); + byte[] buf = new byte[1024]; + int len; + while ((len = inputStream.read(buf)) > 0) { + outputStream.write(buf, 0, len); + } + response.flushBuffer(); + } catch (IOException e) { + log.error("预览文件失败" + e.getMessage()); + response.setStatus(404); + e.printStackTrace(); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + log.error(e.getMessage(), e); + } + } + if (outputStream != null) { + try { + outputStream.close(); + } catch (IOException e) { + log.error(e.getMessage(), e); + } + } + } + + } /** * 下载文件 * @@ -307,6 +307,67 @@ public class CommonController { } } + } + /** + * 文件预览 + * + * @param id 传入文件id + * @param request + * @param response + */ + @GetMapping(value = "/pdf/viewFile") + public void viewFile(String id,HttpServletRequest request, HttpServletResponse response) { + // 查询数据表数据是否存在 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OSSFile::getId,id); + OSSFile ossFile = ossFileService.getOne(queryWrapper); + if( null == ossFile){ + throw new JeroBootException("文件不存在.."); + } + InputStream inputStream = null; + OutputStream outputStream = null; + try { + String fileName = ""; + //本地下载 + String filePath = ossFile.getUrl(); + File file = new File(filePath); + if(!file.exists()){ + response.setStatus(404); + throw new RuntimeException("文件不存在.."); + } + // 文件名称 + fileName = file.getName(); + inputStream = new BufferedInputStream(new FileInputStream(filePath)); + response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("UTF-8"),"iso-8859-1")); + response.setContentType("application/force-download");// 设置强制下载不打开 + outputStream = response.getOutputStream(); + byte[] buf = new byte[1024]; + int len; + while ((len = inputStream.read(buf)) > 0) { + outputStream.write(buf, 0, len); + } + response.flushBuffer(); + } catch (IOException e) { + log.error("文件下载失败" + e.getMessage()); + response.setStatus(404); + e.printStackTrace(); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + log.error(e.getMessage(), e); + } + } + if (outputStream != null) { + try { + outputStream.close(); + } catch (IOException e) { + log.error(e.getMessage(), e); + } + } + } + } /** diff --git a/jero-web/src/views/documentManage/library/docDetail/index.vue b/jero-web/src/views/documentManage/library/docDetail/index.vue index 8b96c7ef0..3f7775e89 100644 --- a/jero-web/src/views/documentManage/library/docDetail/index.vue +++ b/jero-web/src/views/documentManage/library/docDetail/index.vue @@ -83,7 +83,7 @@ }) }, pdfPreview(item){ - window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/sys/common/download?id=' + item.id)) + window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + item.id)) }, download(item) { downloadFile('/sys/common/download', item.fileName, { id: item.id })