From 50659ef1a716d7f5c352e32d4a18bcf2bf67cc0d Mon Sep 17 00:00:00 2001 From: ybb <2532447764@qq.com> Date: Thu, 7 Aug 2025 11:26:02 +0800 Subject: [PATCH] =?UTF-8?q?8/7,ybb=E6=96=87=E4=BB=B6=E5=A4=B9=E5=92=8C?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E9=83=BD=E5=AE=9E=E7=8E=B0=E4=BA=86=E8=AE=B0?= =?UTF-8?q?=E5=BD=95Id=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../znpt/service/BusinessDataFileService.java | 12 +++ .../znpt/service/BusinessDataService.java | 3 + .../impl/BusinessDataFileServiceImpl.java | 85 ++++++++++++++++++- .../BusinessDataFileController.java | 73 +--------------- 4 files changed, 102 insertions(+), 71 deletions(-) diff --git a/core/src/main/java/com/dite/znpt/service/BusinessDataFileService.java b/core/src/main/java/com/dite/znpt/service/BusinessDataFileService.java index 031a4c3..a5d995d 100644 --- a/core/src/main/java/com/dite/znpt/service/BusinessDataFileService.java +++ b/core/src/main/java/com/dite/znpt/service/BusinessDataFileService.java @@ -6,6 +6,7 @@ import com.dite.znpt.domain.page.PageBean; import io.swagger.annotations.ApiOperation; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; @@ -13,17 +14,28 @@ import javax.servlet.http.HttpServletResponse; @Service public interface BusinessDataFileService { + @ApiOperation("分页查询文件") PageBean pageSelect(Integer page, Integer pageSize, Long folderId, String fileName); + @ApiOperation("删除文件") Result delete(@RequestParam(value = "fileId", required = false) Long fileId,@RequestParam(value = "foldelId", required = false) Long folderId); + @ApiOperation("增加数据库文件信息") void add(BusinessDataFileEntity businessDataFileEntity); + @ApiOperation("获取文件路径") String getPath(Long fileId); + @ApiOperation("删除文件") // 在接口中添加重命名方法 Result reName(Long fileId, String newFileName); + @ApiOperation("下载文件") + void upload(Long fileId, HttpServletResponse response); + + @ApiOperation("上传文件") + Result addfile(MultipartFile file, Long folderId); + // 在接口中添加预览方法 // Result preview(Long fileId, HttpServletResponse response); } diff --git a/core/src/main/java/com/dite/znpt/service/BusinessDataService.java b/core/src/main/java/com/dite/znpt/service/BusinessDataService.java index 0aa585d..f4a826c 100644 --- a/core/src/main/java/com/dite/znpt/service/BusinessDataService.java +++ b/core/src/main/java/com/dite/znpt/service/BusinessDataService.java @@ -4,6 +4,8 @@ import com.dite.znpt.domain.Result; import com.dite.znpt.domain.page.PageBean; import io.swagger.annotations.ApiOperation; +import javax.servlet.http.HttpServletResponse; + @ApiOperation("商务资料文件夹service") public interface BusinessDataService { @@ -12,4 +14,5 @@ public interface BusinessDataService { String getPath(Long parentId); Result delete(Long folderId); Result reName(Long folderId, String newName); + } diff --git a/core/src/main/java/com/dite/znpt/service/impl/BusinessDataFileServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/BusinessDataFileServiceImpl.java index b02db41..95b343c 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/BusinessDataFileServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/BusinessDataFileServiceImpl.java @@ -2,20 +2,26 @@ package com.dite.znpt.service.impl; +import cn.dev33.satoken.stp.StpUtil; import com.dite.znpt.domain.Result; import com.dite.znpt.domain.entity.BusinessDataFileEntity; import com.dite.znpt.domain.page.PageBean; import com.dite.znpt.mapper.BusinessDataFileMapper; +import com.dite.znpt.mapper.BusinessDataMapper; import com.dite.znpt.service.BusinessDataFileService; +import com.dite.znpt.service.BusinessDataService; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; -import java.io.File; -import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; +import java.util.Date; import java.util.List; import static jodd.io.FileUtil.deleteFile; @@ -27,6 +33,8 @@ import static org.apache.tomcat.util.http.fileupload.FileUtils.deleteDirectory; public class BusinessDataFileServiceImpl implements BusinessDataFileService { @Resource private BusinessDataFileMapper businessDataFileMapper; + @Resource + private BusinessDataService businessDataService; @ApiOperation("分页查询文件") @@ -156,6 +164,79 @@ public class BusinessDataFileServiceImpl implements BusinessDataFileService { } } + @ApiOperation("下载文件") + @Override + public void upload(Long fileId, HttpServletResponse response) { + String path = getPath(fileId); + try { + // path是指想要下载的文件的路径 + File file = new File(path); + // 获取文件名 + String filename = file.getName(); + // 获取文件后缀名 + String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase(); + // 将文件写入输入流 + FileInputStream fileInputStream = new FileInputStream(file); + InputStream fis = new BufferedInputStream(fileInputStream); + byte[] buffer = new byte[fis.available()]; + fis.read(buffer); + fis.close(); + // 清空response + response.reset(); + // 设置response的Header + response.setCharacterEncoding("UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8")); + // 告知浏览器文件的大小 + response.addHeader("Content-Length", "" + file.length()); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + response.setContentType("application/octet-stream"); + outputStream.write(buffer); + outputStream.flush(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + @ApiOperation("上传文件") + @Override + public Result addfile(MultipartFile file, Long folderId) { + String loginIdAsLong = "未登录用户"; + if(StpUtil.isLogin()){ + loginIdAsLong = StpUtil.getLoginIdAsString(); + } + + if (file.isEmpty()) { + return Result.error("上传文件为空"); + } + // TODO 以后可以优化,就算文件名一样,加个(1),(2)这种 + + try { + byte[] bytes = file.getBytes(); + String uploadDir = businessDataService.getPath(folderId); + + File uploadedFile = new File(uploadDir + "\\" + file.getOriginalFilename()); + if (uploadedFile.exists()) { + return Result.error("文件已存在"); + } + file.transferTo(uploadedFile); + + // 保存文件信息到数据 + BusinessDataFileEntity fileEntity = new BusinessDataFileEntity(); + fileEntity.setFolderId(folderId); + fileEntity.setFileName(file.getOriginalFilename()); + fileEntity.setFilePath(uploadDir + "\\" + file.getOriginalFilename()); + fileEntity.setFileType(file.getContentType()); + fileEntity.setFileSize(file.getSize()/1024); + fileEntity.setUploadTime(new Date()); + fileEntity.setUploaderId(loginIdAsLong); + System.out.println(uploadDir + "\\" + file.getOriginalFilename()); + add(fileEntity); + + return Result.okM("上传成功"); + } catch (IOException e) { + e.printStackTrace(); + return Result.error("上传失败"); + } + } } diff --git a/web/src/main/java/com/dite/znpt/web/controller/BusinessDataFileController.java b/web/src/main/java/com/dite/znpt/web/controller/BusinessDataFileController.java index 580e0b8..eb647e7 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/BusinessDataFileController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/BusinessDataFileController.java @@ -6,8 +6,10 @@ import com.dite.znpt.domain.entity.BusinessDataFileEntity; import com.dite.znpt.domain.page.PageBean; import com.dite.znpt.mapper.BusinessDataFileMapper; import com.dite.znpt.mapper.BusinessDataMapper; + import com.dite.znpt.service.BusinessDataFileService; import com.dite.znpt.service.BusinessDataService; +import com.dite.znpt.service.impl.BusinessDataFileServiceImpl; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -54,43 +56,7 @@ public class BusinessDataFileController { @PostMapping("/add") public Result add(@RequestParam("file") MultipartFile file, @RequestParam Long folderId) { - String loginIdAsLong = "未登录用户"; - if(StpUtil.isLogin()){ - loginIdAsLong = StpUtil.getLoginIdAsString(); - } - - if (file.isEmpty()) { - return Result.error("上传文件为空"); - } - // TODO 以后可以优化,就算文件名一样,加个(1),(2)这种 - - try { - byte[] bytes = file.getBytes(); - String uploadDir = businessDataService.getPath(folderId); - - File uploadedFile = new File(uploadDir + "\\" + file.getOriginalFilename()); - if (uploadedFile.exists()) { - return Result.error("文件已存在"); - } - file.transferTo(uploadedFile); - - // 保存文件信息到数据 - BusinessDataFileEntity fileEntity = new BusinessDataFileEntity(); - fileEntity.setFolderId(folderId); - fileEntity.setFileName(file.getOriginalFilename()); - fileEntity.setFilePath(uploadDir + "\\" + file.getOriginalFilename()); - fileEntity.setFileType(file.getContentType()); - fileEntity.setFileSize(file.getSize()/1024); - fileEntity.setUploadTime(new Date()); - fileEntity.setUploaderId(loginIdAsLong); - System.out.println(uploadDir + "\\" + file.getOriginalFilename()); - businessDataFileService.add(fileEntity); - - return Result.okM("上传成功"); - } catch (IOException e) { - e.printStackTrace(); - return Result.error("上传失败"); - } + return businessDataFileService.addfile(file, folderId); } @ApiOperation(value = "删除文件") @@ -103,38 +69,7 @@ public class BusinessDataFileController { @ApiOperation(value = "下载文件") @GetMapping("/download") public void download(@RequestParam("fileId") Long fileId, HttpServletResponse response) { - String path = businessDataFileService.getPath(fileId); - try { - // path是指想要下载的文件的路径 - File file = new File(path); - log.info(file.getPath()); - // 获取文件名 - String filename = file.getName(); - // 获取文件后缀名 - String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase(); - log.info("文件后缀名:" + ext); - - // 将文件写入输入流 - FileInputStream fileInputStream = new FileInputStream(file); - InputStream fis = new BufferedInputStream(fileInputStream); - byte[] buffer = new byte[fis.available()]; - fis.read(buffer); - fis.close(); - - // 清空response - response.reset(); - // 设置response的Header - response.setCharacterEncoding("UTF-8"); - response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8")); - // 告知浏览器文件的大小 - response.addHeader("Content-Length", "" + file.length()); - OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); - response.setContentType("application/octet-stream"); - outputStream.write(buffer); - outputStream.flush(); - } catch (IOException ex) { - ex.printStackTrace(); - } + businessDataFileService.upload(fileId, response); } @ApiOperation(value = "重命名文件", httpMethod = "PUT")