From 57644df7365ad858e6806fddce888813e5b6a08e Mon Sep 17 00:00:00 2001 From: zzs Date: Fri, 18 Oct 2024 09:44:44 +0800 Subject: [PATCH] feat:file proxy --- .../crm/controller/crm/ProxyController.java | 4 +- .../crm/module/crm/service/ProxyService.java | 47 +++++++++---------- 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/ensign-module-crm/ensign-module-crm-biz/src/main/java/com/ensign/crm/module/crm/controller/crm/ProxyController.java b/ensign-module-crm/ensign-module-crm-biz/src/main/java/com/ensign/crm/module/crm/controller/crm/ProxyController.java index a0e6b17..4ccf1f1 100644 --- a/ensign-module-crm/ensign-module-crm-biz/src/main/java/com/ensign/crm/module/crm/controller/crm/ProxyController.java +++ b/ensign-module-crm/ensign-module-crm-biz/src/main/java/com/ensign/crm/module/crm/controller/crm/ProxyController.java @@ -52,7 +52,7 @@ public class ProxyController { @GetMapping("/file/read/do") @PermitAll @Operation(summary = "获取图片") - public void proxyRead(@RequestParam String fileId, @RequestParam boolean isTemp, HttpServletResponse response) { - proxyService.doGetImage(fileId, isTemp, response); + public void proxyRead(@RequestParam String path, HttpServletResponse response) { + proxyService.doGetImage(path, response); } } diff --git a/ensign-module-crm/ensign-module-crm-biz/src/main/java/com/ensign/crm/module/crm/service/ProxyService.java b/ensign-module-crm/ensign-module-crm-biz/src/main/java/com/ensign/crm/module/crm/service/ProxyService.java index 7db267d..cda8fca 100644 --- a/ensign-module-crm/ensign-module-crm-biz/src/main/java/com/ensign/crm/module/crm/service/ProxyService.java +++ b/ensign-module-crm/ensign-module-crm-biz/src/main/java/com/ensign/crm/module/crm/service/ProxyService.java @@ -42,8 +42,10 @@ import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.math.BigDecimal; import java.net.URI; import java.net.URISyntaxException; +import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.TimeUnit; @@ -204,9 +206,9 @@ public class ProxyService { // log.info("receive response: {}", responseBody); log.info("receive json response: {}", jsonStr); JSONObject jsonObject = JSON.parseObject(jsonStr); - if (jsonObject.containsKey("url")) { - String url = jsonObject.getString("url"); - String fileId = extractFileId(url); + if (jsonObject.containsKey("data")) { + String realPath = jsonObject.getString("data"); + String url = initBasePath() + "/ierp/attachment/download.do?path=" + realPath; String downloadUrl = url + "&access_token=" + initAccessToken(); byte[] bytes = imageService.downloadImage(downloadUrl); ImageStorage imageStorage = new ImageStorage(); @@ -216,8 +218,8 @@ public class ProxyService { imageStorage.setFileSize(fileBody.getContentLength()); imageStorage.setFileContent(transformToBase64(bytes)); - imageService.saveImage(fileId, imageStorage); - String convertFileUrl = doConvertFileUrl(fileId, true); + imageService.saveImage(realPath, imageStorage); + String convertFileUrl = doConvertFileUrl(realPath); log.info("convertFileUrl: {}", convertFileUrl); return convertFileUrl; } @@ -421,30 +423,25 @@ public class ProxyService { return ""; } - public String doConvertFileUrl(String fileId, boolean isTemp) { - if (isTemp) { - return "/crm-api/proxy/file/read/do?fileId=" + fileId + "&isTemp=true"; - } - return ""; + public String doConvertFileUrl(String path) { + return "/crm-api/proxy/file/read/do?path=" + path; } - public void doGetImage(String fileId, boolean isTemp, HttpServletResponse response) { - if (isTemp) { - ImageStorage image = imageService.getImage(fileId); - byte[] bytes = Base64.decode(image.getFileContent()); + public void doGetImage(String path, HttpServletResponse response) { + ImageStorage image = imageService.getImage(path); + byte[] bytes = Base64.decode(image.getFileContent()); - try { - response.setContentType(image.getMediaType()); - response.setContentLength(image.getFileSize().intValue()); - response.setHeader("Content-Disposition", "inline; filename=\"" + image.getFileName() + "\""); + try { + response.setContentType(image.getMediaType()); + response.setContentLength(image.getFileSize().intValue()); + response.setHeader("Content-Disposition", "inline; filename=\"" + image.getFileName() + "\""); - ServletOutputStream outputStream = response.getOutputStream(); - outputStream.write(bytes); - outputStream.flush(); - outputStream.close(); - } catch (IOException e) { - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } + ServletOutputStream outputStream = response.getOutputStream(); + outputStream.write(bytes); + outputStream.flush(); + outputStream.close(); + } catch (IOException e) { + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } }