From c4d687aacfb4e7b6ee5ce67df93cf2f8d8df80c1 Mon Sep 17 00:00:00 2001 From: xiejun <xj@2023> Date: 星期日, 26 十一月 2023 14:05:48 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/FileDownloadUtil.java | 114 ++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 81 insertions(+), 33 deletions(-) diff --git a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/FileDownloadUtil.java b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/FileDownloadUtil.java index 89450ec..8df5b21 100644 --- a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/FileDownloadUtil.java +++ b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/FileDownloadUtil.java @@ -21,39 +21,39 @@ @Slf4j public class FileDownloadUtil { - /** - * 涓嬭浇鏂囦欢 - * @param response 鍝嶅簲瀵硅薄 - * @param fileObjectBO 鏂囦欢鐨勪俊鎭紝鍖呭惈鏂囦欢鐨勮緭鍏ユ祦 - * @throws IOException 涓嬭浇寮傚父浼氭姏鍑� - */ - public static void downloadFile(HttpServletResponse response, FileObjectBO fileObjectBO) throws IOException { - downloadFile(response,fileObjectBO,true); - } + /** + * 涓嬭浇鏂囦欢 + * @param response 鍝嶅簲瀵硅薄 + * @param fileObjectBO 鏂囦欢鐨勪俊鎭紝鍖呭惈鏂囦欢鐨勮緭鍏ユ祦 + * @throws IOException 涓嬭浇寮傚父浼氭姏鍑� + */ + public static void downloadFile(HttpServletResponse response, FileObjectBO fileObjectBO) throws IOException { + downloadFile(response,fileObjectBO,true); + } - /** - * 涓嬭浇鏂囦欢 - * @param response 鍝嶅簲瀵硅薄 - * @param fileObjectBO 鏂囦欢鐨勪俊鎭紝鍖呭惈鏂囦欢鐨勮緭鍏ユ祦 - * @param closeInputStream 鏄惁鍏抽棴娴� - * @throws IOException 涓嬭浇鍑洪敊鐨勬椂鍊欐姏鍑哄紓甯� - */ - public static void downloadFile(HttpServletResponse response, FileObjectBO fileObjectBO,boolean closeInputStream) throws IOException { - MediaType mediaType = MediaTypeFactory.getMediaType(fileObjectBO.getBucketName() + "." + fileObjectBO.getFileExtension()).orElse(MediaType.APPLICATION_OCTET_STREAM); - // 璁剧疆寮哄埗涓嬭浇涓嶆墦寮� - response.setContentType(mediaType.toString()+";application/force-download;charset=UTF-8"); - try{ - String fileName = URLEncoder.encode(fileObjectBO.getName() + "." + fileObjectBO.getFileExtension(), "UTF8"); - response.addHeader("Content-Disposition", "attachment;filename="+ fileName+ ";filename*=utf-8''"); - }catch(Exception e){ - if(log.isErrorEnabled()){ - log.error("璁剧疆鏂囦欢鐨勫悕绉板埌鍝嶅簲娴佺殑鏃跺�欏嚭閿�",e); - } - } - response.setCharacterEncoding("UTF-8"); - Cookie cookie = new Cookie("fileDownload", "true"); - cookie.setPath("/"); - response.addCookie(cookie); + /** + * 涓嬭浇鏂囦欢 + * @param response 鍝嶅簲瀵硅薄 + * @param fileObjectBO 鏂囦欢鐨勪俊鎭紝鍖呭惈鏂囦欢鐨勮緭鍏ユ祦 + * @param closeInputStream 鏄惁鍏抽棴娴� + * @throws IOException 涓嬭浇鍑洪敊鐨勬椂鍊欐姏鍑哄紓甯� + */ + public static void downloadFile(HttpServletResponse response, FileObjectBO fileObjectBO,boolean closeInputStream) throws IOException { + MediaType mediaType = MediaTypeFactory.getMediaType(fileObjectBO.getBucketName() + "." + fileObjectBO.getFileExtension()).orElse(MediaType.APPLICATION_OCTET_STREAM); + // 璁剧疆寮哄埗涓嬭浇涓嶆墦寮� + response.setContentType(mediaType.toString()+";application/force-download;charset=UTF-8"); + try{ + String fileName = URLEncoder.encode(fileObjectBO.getName() + "." + fileObjectBO.getFileExtension(), "UTF8"); + response.addHeader("Content-Disposition", "attachment;filename="+ fileName+ ";filename*=utf-8''"); + }catch(Exception e){ + if(log.isErrorEnabled()){ + log.error("璁剧疆鏂囦欢鐨勫悕绉板埌鍝嶅簲娴佺殑鏃跺�欏嚭閿�",e); + } + } + response.setCharacterEncoding("UTF-8"); + Cookie cookie = new Cookie("fileDownload", "true"); + cookie.setPath("/"); + response.addCookie(cookie); if(closeInputStream) { try (InputStream ins = (fileObjectBO.getInputStream() != null ? fileObjectBO.getInputStream() : new FileInputStream(fileObjectBO.getFileLocalPath()))) { IOUtils.copy(ins, response.getOutputStream()); @@ -76,5 +76,53 @@ throw e; } } - } + } + + /** + * 涓嬭浇鏂囦欢 + * @param response 鍝嶅簲瀵硅薄 + * @param fileObjectBO 鏂囦欢鐨勪俊鎭紝鍖呭惈鏂囦欢鐨勮緭鍏ユ祦 + * @param closeInputStream 鏄惁鍏抽棴娴� + * @throws IOException 涓嬭浇鍑洪敊鐨勬椂鍊欐姏鍑哄紓甯� + */ + public static void downloadFileLocal(HttpServletResponse response, FileObjectBO fileObjectBO,boolean closeInputStream) throws IOException { + MediaType mediaType = MediaTypeFactory.getMediaType(fileObjectBO.getFileExtension()).orElse(MediaType.APPLICATION_OCTET_STREAM); + // 璁剧疆寮哄埗涓嬭浇涓嶆墦寮� + response.setContentType(mediaType.toString()+";application/force-download;charset=UTF-8"); + try{ + String fileName = URLEncoder.encode(fileObjectBO.getName(), "UTF8"); + response.addHeader("Content-Disposition", "attachment;filename="+ fileName+ ";filename*=utf-8''"); + }catch(Exception e){ + if(log.isErrorEnabled()){ + log.error("璁剧疆鏂囦欢鐨勫悕绉板埌鍝嶅簲娴佺殑鏃跺�欏嚭閿�",e); + } + } + response.setCharacterEncoding("UTF-8"); + Cookie cookie = new Cookie("fileDownload", "true"); + cookie.setPath("/"); + response.addCookie(cookie); + if(closeInputStream) { + try (InputStream ins = (fileObjectBO.getInputStream() != null ? fileObjectBO.getInputStream() : new FileInputStream(fileObjectBO.getFileLocalPath()))) { + IOUtils.copy(ins, response.getOutputStream()); + } catch (IOException e) { + //鏈夊彲鑳藉鎴风鐨勯摼鎺� + if (log.isErrorEnabled()) { + log.error("鍐欏叆鏂囦欢鍒板搷搴旀祦鍑洪敊", e); + } + throw e; + } + }else{ + try { + InputStream ins = (fileObjectBO.getInputStream() != null ? fileObjectBO.getInputStream() : new FileInputStream(fileObjectBO.getFileLocalPath())); + IOUtils.copy(ins, response.getOutputStream()); + } catch (IOException e) { + //鏈夊彲鑳藉鎴风鐨勯摼鎺� + if (log.isErrorEnabled()) { + log.error("鍐欏叆鏂囦欢鍒板搷搴旀祦鍑洪敊", e); + } + throw e; + } + } + } + } -- Gitblit v1.9.3