From 51b9180316afedc432d750966f09e3390fe0defa Mon Sep 17 00:00:00 2001 From: Ziin Date: Thu, 7 Aug 2025 15:39:58 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E5=A4=B4=E5=83=8F=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.cache/.Apifox_Helper/.toolWindow.db | Bin 196608 -> 196608 bytes pom.xml | 14 +++++- src/main/java/vvpkassistant/Application.java | 2 + .../User/controller/UserController.java | 2 +- .../file/controller/FileController.java | 31 +++++++++++++ .../file/service/FileService.java | 11 +++++ .../file/service/FileServiceImpl.java | 43 ++++++++++++++++++ src/main/resources/application.yml | 17 ++++++- target/classes/application.yml | 17 ++++++- 9 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 src/main/java/vvpkassistant/file/controller/FileController.java create mode 100644 src/main/java/vvpkassistant/file/service/FileService.java create mode 100644 src/main/java/vvpkassistant/file/service/FileServiceImpl.java diff --git a/.idea/.cache/.Apifox_Helper/.toolWindow.db b/.idea/.cache/.Apifox_Helper/.toolWindow.db index 11b441f4263671bc4d710c7e1a8a9d40ac9fdb94..cca5fda53afafd14c99bf95cdc7642253b62e616 100644 GIT binary patch delta 2202 zcmb7FYitx%6yAGxrY)8&ee8R?59(sImUbSyGdtx~N}&%}N|lzPMw!PQs4d-g*;A1Y24&~dvfk~ z&pr2?Z_j44i?i9q2Lpf~FJA}v+>VJbSTead@@{z8+ibJhJPjC}br{Mh45d{VN}?Ew zLm1p%46b4fMFlrtY0R!7$9r4o zQ}?Fw{h>A90^b9n1HPwR(Q>D+FmR`LDDZr6!gb1d(En^W7g?IO^|mwS*fyXWYjp57)n2rp;`PlI>A@5@;VSi-0X!OGgy6X?-10a%mBV6*DHO8h}klzL)|e*l2ut3{;Z#15&GzeHwmGfEEKi58oz_o`6K;2(bf345A)_h(Si+ zOxSw^an|PF@7wI%=((q~r1<2LFN=Ozbcr~d8~=c?kCoLKcRHYp1cEV83V$cqL}_xL zW7y#cB$Ez@1LtY8EmV7b#0#tJYIm>x@xw5b*T~$_FE#046gCjpiLd~d#%+9Aa%8C^ zg#*i1125DsE3g$qf5i*?88cdqoa)P@Q@yM4(>7JS)B-QL5?9Fudi|I^F@;}Rbs@`4(8_KL;*IH1Ecl4zP zA-%@jxUM&Is&fney{brIc!ot>oT0>6f>AhukrX7-xIL2o3=f>cjeVU%Qj@Ujj`h2G zw{N?xbvq*ruB?^zX3%mmofh}5-qLpaRx5?s@7ay(lT!9o^raNkqEysXEL6~n>WY3b zv+D|1#bbcsD25*9cs4;(37S(x9uF0kkMkTQWAc>?Hsdl`MpL3yRFgR4T5Y?t-n2^E6_v8Y>=LK=}Ij-ymqUbWZ2=>|q$7 zXV(~~cuiEe#PhU4A4tKQ{L|EsRC;#Gyg zynrn?KK`VAY-h7kH37Rx&}2OND#U|&gK=mIhDosAIC>1WlJ>D18;$!3U`dqyQM?Yes|d(Q4T2Rb1|7ooDeZ))B*OSF{0GJ;qNBPhCBD~4bc zxD2?6K~lsTLa+Nrq$uW~Br|l(mi9kN26G=Y{XbH-3MD-=EN?!p49r zA2x>f_2`h)n_vv;=fy&f zex}o+`pY3?GgcxLOdhn&v8RoFL^6w=#la%6Ed7%l4&3H@ zKbmI~EKNz?AbkpLP#!EEf>9_7YQr!Mr9t!z{z3_b=dcE#IJE8sU?`&NUqTA*>w<4O z)CRvl1koA;$2k>*1?x=wY)mH{4+rYOa&d)+US2>eG33(TU&xCst!Hv*!xQv}hirOy z7{z1Aq9;d|&P;mY6J~YqM`V;7ST!{A|gYpIf z<1R)KJ;eKwVU6J$Ii*)1)javase 3.4.1 - - + + + org.dromara.x-file-storage + x-file-storage-spring + 2.3.0 + + + + com.qcloud + cos_api + 5.6.227 + diff --git a/src/main/java/vvpkassistant/Application.java b/src/main/java/vvpkassistant/Application.java index 326f914..28d10d7 100644 --- a/src/main/java/vvpkassistant/Application.java +++ b/src/main/java/vvpkassistant/Application.java @@ -1,10 +1,12 @@ package vvpkassistant; +import org.dromara.x.file.storage.spring.EnableFileStorage; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; @SpringBootApplication @EnableAsync +@EnableFileStorage public class Application { public static void main(String[] args) { diff --git a/src/main/java/vvpkassistant/User/controller/UserController.java b/src/main/java/vvpkassistant/User/controller/UserController.java index 93fad65..6fe8eb2 100644 --- a/src/main/java/vvpkassistant/User/controller/UserController.java +++ b/src/main/java/vvpkassistant/User/controller/UserController.java @@ -392,7 +392,7 @@ public class UserController { return ResponseData.success(userService.addUserWithMail(model)); } - @GetMapping("/activateAccount") + @GetMapping("/activate") public ResponseData activateAccount(@RequestParam("token") String token){ return ResponseData.success(userService.activateAccount(token)); } diff --git a/src/main/java/vvpkassistant/file/controller/FileController.java b/src/main/java/vvpkassistant/file/controller/FileController.java new file mode 100644 index 0000000..0284973 --- /dev/null +++ b/src/main/java/vvpkassistant/file/controller/FileController.java @@ -0,0 +1,31 @@ +package vvpkassistant.file.controller; + +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import vvpkassistant.Data.ResponseData; +import vvpkassistant.file.service.FileService; + +import javax.annotation.Resource; + +/* + * @author: ziin + * @date: 2025/8/7 13:58 + */ +@RestController +@RequestMapping("file") +public class FileController { + + + @Resource + private FileService fileService; + + + @PostMapping("/uploadHeadIcon") + public ResponseData uploadHeadIcon(@RequestParam("file") MultipartFile file) { + return ResponseData.success(fileService.uploadHeadIcon(file)); + } + +} diff --git a/src/main/java/vvpkassistant/file/service/FileService.java b/src/main/java/vvpkassistant/file/service/FileService.java new file mode 100644 index 0000000..ce6a5b6 --- /dev/null +++ b/src/main/java/vvpkassistant/file/service/FileService.java @@ -0,0 +1,11 @@ +package vvpkassistant.file.service; + +import org.springframework.web.multipart.MultipartFile; + +/* + * @author: ziin + * @date: 2025/8/7 13:58 + */ +public interface FileService { + Object uploadHeadIcon(MultipartFile file); +} diff --git a/src/main/java/vvpkassistant/file/service/FileServiceImpl.java b/src/main/java/vvpkassistant/file/service/FileServiceImpl.java new file mode 100644 index 0000000..9362300 --- /dev/null +++ b/src/main/java/vvpkassistant/file/service/FileServiceImpl.java @@ -0,0 +1,43 @@ +package vvpkassistant.file.service; + +import cn.hutool.core.lang.UUID; +import lombok.extern.slf4j.Slf4j; +import org.dromara.x.file.storage.core.FileInfo; +import org.dromara.x.file.storage.core.FileStorageService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; + +/* + * @author: ziin + * @date: 2025/8/7 13:58 + */ +@Service +@Slf4j +public class FileServiceImpl implements FileService { + + @Resource + private FileStorageService fileStorageService;//注入实列 + + @Override + public Object uploadHeadIcon(MultipartFile file) { + // 生成 UUID 文件名,保留原扩展名 + String originalFilename = file.getOriginalFilename(); + String extension = originalFilename != null && originalFilename.contains(".") + ? originalFilename.substring(originalFilename.lastIndexOf(".")) + : ""; + String uuidFileName = UUID.randomUUID().toString().replace("-", "") + extension; + + // 使用 fileStorageService 进行上传 + // 设置保存的文件名为 UUID + + // 返回文件信息或 URL + + log.info("Uploading head icon to file: {}", uuidFileName); + return fileStorageService.of(file) + .setSaveFilename(uuidFileName) // 设置保存的文件名为 UUID + .upload(); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4dc0438..1b04714 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -44,4 +44,19 @@ sa-token: activateUrl: http://192.168.1.174:8086/user/activate?token= verificationMailUrl: http://192.168.1.174:8086/user/verification?token= -forgetPassWordUrl: http://192.168.1.174:8086/user//resetPassword/?token= \ No newline at end of file +forgetPassWordUrl: http://192.168.1.174:8086/user//resetPassword/?token= + +dromara: + x-file-storage: #文件存储配置 + default-platform: tencent-cos-1 #默认使用的存储平台 + thumbnail-suffix: ".min.jpg" #缩略图后缀,例如【.min.jpg】【.png】 + tencent-cos: + - platform: tencent-cos-1 # 存储平台标识 + enable-storage: true # 启用存储 + secret-id: AKIDNbcQ1c3HJD9rQ6g5PaZN0PekcIkyzmMl + secret-key: Nl4FI9mLo46vWu40iT0JQK8j8LK5cw2u + region: ap-shanghai #存仓库所在地域 + bucket-name: vv-1317974657 + domain: https://vv-1317974657.cos.ap-shanghai.myqcloud.com # 访问域名,注意“/”结尾,例如:https://abc.cos.ap-nanjing.myqcloud.com/ + base-path: /headerIcon/ # 基础路径 + diff --git a/target/classes/application.yml b/target/classes/application.yml index 4dc0438..1b04714 100644 --- a/target/classes/application.yml +++ b/target/classes/application.yml @@ -44,4 +44,19 @@ sa-token: activateUrl: http://192.168.1.174:8086/user/activate?token= verificationMailUrl: http://192.168.1.174:8086/user/verification?token= -forgetPassWordUrl: http://192.168.1.174:8086/user//resetPassword/?token= \ No newline at end of file +forgetPassWordUrl: http://192.168.1.174:8086/user//resetPassword/?token= + +dromara: + x-file-storage: #文件存储配置 + default-platform: tencent-cos-1 #默认使用的存储平台 + thumbnail-suffix: ".min.jpg" #缩略图后缀,例如【.min.jpg】【.png】 + tencent-cos: + - platform: tencent-cos-1 # 存储平台标识 + enable-storage: true # 启用存储 + secret-id: AKIDNbcQ1c3HJD9rQ6g5PaZN0PekcIkyzmMl + secret-key: Nl4FI9mLo46vWu40iT0JQK8j8LK5cw2u + region: ap-shanghai #存仓库所在地域 + bucket-name: vv-1317974657 + domain: https://vv-1317974657.cos.ap-shanghai.myqcloud.com # 访问域名,注意“/”结尾,例如:https://abc.cos.ap-nanjing.myqcloud.com/ + base-path: /headerIcon/ # 基础路径 +