From 3722dfb4f0b687a814dd941cdf9e64c42b566b37 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 18 Jun 2025 13:59:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E9=80=9A=E4=BA=86=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=96=B0=E5=A2=9E=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=8E=A5=E5=8F=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/pojo/models/ImportFileInfo.java | 3 ++ .../manage/service/ImportPrjService.java | 6 +++ .../serviceimpl/ImportPrjServiceImpl.java | 50 +++++++++++++++++-- 3 files changed, 56 insertions(+), 3 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/ImportFileInfo.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/ImportFileInfo.java index b79fc0e..106e6ae 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/ImportFileInfo.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/ImportFileInfo.java @@ -66,4 +66,7 @@ public class ImportFileInfo extends BaseModel { @TableField(value = "permanent_deleted") private Boolean permanentDeleted; + @TableField(value = "src_path") + private String srcPath; + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/ImportPrjService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/ImportPrjService.java index 8bd6cfd..a677cc8 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/ImportPrjService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/ImportPrjService.java @@ -1,9 +1,15 @@ package com.electromagnetic.industry.software.manage.service; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; public interface ImportPrjService { boolean importPrj(MultipartFile file); + ResponseEntity download(String id, HttpServletResponse response); + + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ImportPrjServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ImportPrjServiceImpl.java index 720e63e..a2765f7 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ImportPrjServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ImportPrjServiceImpl.java @@ -1,7 +1,10 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; +import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.text.StrFormatter; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -12,12 +15,20 @@ import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum; import com.electromagnetic.industry.software.common.exception.BizException; import com.electromagnetic.industry.software.common.util.EleCommonUtil; import com.electromagnetic.industry.software.common.util.IdWorker; +import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.manage.config.ElePropertyConfig; import com.electromagnetic.industry.software.manage.mapper.ImportPrjInfoMapper; +import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.models.ImportFileInfo; import com.electromagnetic.industry.software.manage.service.ImportPrjService; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; import org.mockito.internal.util.io.IOUtil; +import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -36,13 +47,14 @@ public class ImportPrjServiceImpl extends ServiceImpl pathIdMap = new HashMap<>(); @@ -82,6 +94,7 @@ public class ImportPrjServiceImpl extends ServiceImpl download(String id, HttpServletResponse response) { + String fileName = ""; + ImportFileInfo fileInfo = this.baseMapper.selectById(id); + String fileSysPath = elePropertyConfig.getImportPrjPath() + File.pathSeparator + id; + String dbPath = fileInfo.getSrcPath(); + try { + Assert.isTrue(FileUtil.exist(fileSysPath), "下载文件不存在,路径为 {}", dbPath); + FileSystemResource fileSystemResource = new FileSystemResource(fileSysPath); + fileName = fileSystemResource.getFilename(); + HttpHeaders headers = new HttpHeaders(); + headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); + headers.add("Pragma", "no-cache"); + headers.add("Expires", "0"); + String newFileName = Base64.encode(fileInfo.getFileName() + "." + fileInfo.getFileType()); + response.setHeader("content-disposition", "attachment;filename=" + newFileName); + UserThreadLocal.setSuccessInfo(fileInfo.getParentId(), id, "下载文件 {} 成功,文件路径 {}", fileInfo.getFileName() + "." + fileInfo.getFileType(), dbPath); + // 构建响应实体(可以返回