From 6892c31200a7ed1b0e60ee5aff794b1fcecc7ef6 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期三, 01 十一月 2023 16:28:06 +0800 Subject: [PATCH] 解决文件上传时,文件名重复问题 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java | 154 ++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 108 insertions(+), 46 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java index e0c728f..d361a51 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java @@ -1,15 +1,5 @@ package com.ruoyi.web.controller.common; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; @@ -17,33 +7,50 @@ import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.framework.config.ServerConfig; +import org.apache.catalina.connector.Connector; +import org.apache.catalina.startup.Tomcat; +import org.apache.coyote.AbstractProtocol; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.management.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.lang.management.ManagementFactory; +import java.util.Set; /** * 閫氱敤璇锋眰澶勭悊 - * + * * @author ruoyi */ @RestController -public class CommonController -{ +public class CommonController { private static final Logger log = LoggerFactory.getLogger(CommonController.class); @Autowired private ServerConfig serverConfig; + /** * 閫氱敤涓嬭浇璇锋眰 - * + * * @param fileName 鏂囦欢鍚嶇О - * @param delete 鏄惁鍒犻櫎 + * @param delete 鏄惁鍒犻櫎 */ @GetMapping("common/download") - public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) - { - try - { - if (!FileUtils.checkAllowDownload(fileName)) - { + public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) { + try { + if (!FileUtils.checkAllowDownload(fileName)) { throw new Exception(StringUtils.format("鏂囦欢鍚嶇О({})闈炴硶锛屼笉鍏佽涓嬭浇銆� ", fileName)); } String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); @@ -52,52 +59,90 @@ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, realFileName); FileUtils.writeBytes(filePath, response.getOutputStream()); - if (delete) - { + if (delete) { FileUtils.deleteFile(filePath); } - } - catch (Exception e) - { + } catch (Exception e) { log.error("涓嬭浇鏂囦欢澶辫触", e); } } + /** - * 閫氱敤涓婁紶璇锋眰 + * 閫氱敤涓婁紶璇锋眰,type 涓�0 浠h〃鏄樊鏃呮姤閿�锛屼负1浠h〃璐圭敤鐢宠,鍏跺畠鍊间笉鍙� */ @PostMapping("/common/upload") - public AjaxResult uploadFile(MultipartFile file) throws Exception - { - try - { + public AjaxResult uploadFile(MultipartFile file) throws Exception { + + try { // 涓婁紶鏂囦欢璺緞 String filePath = RuoYiConfig.getUploadPath(); + + //鍒ゆ柇鏂囦欢鏄惁瀛樺湪 + String filename = file.getOriginalFilename().trim(); + String felinamePath = FileUploadUtils.extractFilename(file); +// String pathFileName = FileUploadUtils.getPathFileName(filePath, s); + File file1 = new File(filePath + "/" + felinamePath); + boolean exists = file1.exists(); + if (exists) { + int i = filename.lastIndexOf("."); + String startStr = filename.substring(0, i); + String endStr = filename.substring(i, filename.length()); + + String newFilename = startStr + System.currentTimeMillis() + endStr; // your new filename + String contentType = file.getContentType(); + byte[] bytes = file.getBytes(); + file = new MockMultipartFile(newFilename, newFilename, contentType, bytes); + } + // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О String fileName = FileUploadUtils.upload(filePath, file); - String url = serverConfig.getUrl() + fileName; + String url1 = serverConfig.getUrl(); + log.info("url1鐨勫�紀ld :{}", url1); + if (url1.contains("8032")) { + //杩欓噷鐨�8032涓嶆槸tomcat鐨勶紝鎵�浠ヨ杞垚tomcat鐨� + url1 = url1.replace("8032", "8032/prod-api"); + } + log.info("url1鐨勫�糿ew :{}", url1); + String url = url1 + fileName; AjaxResult ajax = AjaxResult.success(); ajax.put("fileName", fileName); ajax.put("url", url); return ajax; - } - catch (Exception e) - { + } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } + + +// private static void parseUTF(int[] bits) { +// int index = 0;//杩欎釜鎸囬拡鎸囧悜姣忎竴琛屽惊鐜椂鍒椾笅鏍囩殑浣嶇疆锛屼笅涓�琛屽紑濮嬫椂閲嶆柊缃綅0 +// int count = 0; +// ;//杩欎釜鍙橀噺璁板綍姣忎釜UTF-8瀛楃鐨勫瓧鑺傛暟锛岃嚦灏�1瀛楄妭 +// for (int j = ; j < bits.length; ) { +// //寰幆姣忎竴琛屾暟缁勬暟鎹�-浠庡ご鍘昏--鍏堣杩欎釜瀛楃鏄嚑涓瓧鑺傜粍鎴愮殑 +// // 鐒跺悗鎸塽tf-8鐨勭紪鐮佹牸寮忕粍鍚堝瓧绗︿覆锛岃浆鎹负瀛楃鍗冲彲 +// if (bits[j] == 1) { +// count++; +// index++; +// } else { +// index++;//杩欎竴浣嶆槸1鍚庨潰璺熺殑閭d竴涓猳 +// //涓嶄负1锛屽垯璇存槑宸茬粡瑙f瀽瀹屽瓧鑺傛暟锛宑ount閲岄潰瀛樼殑濡傛灉鏄疈琛ㄧず鏄崟瀛楄妭鏁版嵁 +// //濡傛灉涓嶆槸o鍒欒〃绀烘槸澶氬瓧鑺傛暟鎹� +// String str = ""; +// } +// } +// } +// +//} /** * 鏈湴璧勬簮閫氱敤涓嬭浇 */ @GetMapping("/common/download/resource") - public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) - throws Exception - { - try - { - if (!FileUtils.checkAllowDownload(resource)) - { + public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) throws Exception { + try { + if (!FileUtils.checkAllowDownload(resource)) { throw new Exception(StringUtils.format("璧勬簮鏂囦欢({})闈炴硶锛屼笉鍏佽涓嬭浇銆� ", resource)); } // 鏈湴璧勬簮璺緞 @@ -109,10 +154,27 @@ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, downloadName); FileUtils.writeBytes(downloadPath, response.getOutputStream()); - } - catch (Exception e) - { + } catch (Exception e) { log.error("涓嬭浇鏂囦欢澶辫触", e); } } -} + + + public int getTomcatPort() { + MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer(); + try { + QueryExp protocol = Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")); + ObjectName name = new ObjectName("*:type=Connector,*"); + Set<ObjectName> objectNames = beanServer.queryNames(name, protocol); + for (ObjectName objectName : objectNames) { + String catalina = objectName.getDomain(); + if ("Catalina".equals(catalina)) { + return Integer.parseInt(objectName.getKeyProperty("port")); + } + } + } catch (MalformedObjectNameException e) { + e.printStackTrace(); + } + return 0; + } +} \ No newline at end of file -- Gitblit v1.9.3