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); + // 构建响应实体(可以返回