FileMangerController.java 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.example.fms.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.example.fms.common.model.dto.FMSDeleteFileDTO;
  4. import com.example.fms.common.utils.Response;
  5. import com.example.fms.domain.SystemFile;
  6. import com.example.fms.service.FileMangerService;
  7. import com.example.fms.service.SystemFileService;
  8. import io.swagger.v3.oas.annotations.Operation;
  9. import io.swagger.v3.oas.annotations.tags.Tag;
  10. import lombok.RequiredArgsConstructor;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springframework.core.io.InputStreamResource;
  13. import org.springframework.http.HttpHeaders;
  14. import org.springframework.http.MediaType;
  15. import org.springframework.http.ResponseEntity;
  16. import org.springframework.web.bind.annotation.*;
  17. import org.springframework.web.multipart.MultipartFile;
  18. import java.io.ByteArrayInputStream;
  19. import java.io.File;
  20. import java.util.List;
  21. /**
  22. * @Author xiexiang
  23. * @Date 2023/6/6
  24. */
  25. @Tag(name = "操作模块")
  26. @Slf4j
  27. @RestController
  28. @RequiredArgsConstructor
  29. @RequestMapping("/fileManager")
  30. public class FileMangerController {
  31. private final FileMangerService fileManagerService;
  32. private final SystemFileService systemFileService;
  33. @PostMapping("/uploadSystemFile")
  34. @Operation(summary = "上传文件")
  35. public String upload(@RequestBody List<MultipartFile> files, Integer sourceId) {
  36. List<Integer> insertIds = fileManagerService.add(files, sourceId);
  37. return Response.success(insertIds);
  38. }
  39. //
  40. // @PostMapping("/uploadSystemFile")
  41. // @Operation(summary = "上传文件")
  42. // public String upload(@RequestBody List<File> files, Integer sourceId ){
  43. // for(File file : files) {
  44. // System.out.println(file.getName());
  45. // }
  46. // return Response.success();
  47. // }
  48. @GetMapping("/downloadSystemFile")
  49. @Operation(summary = "取出文件")
  50. public ResponseEntity<InputStreamResource> download(Integer fileId) throws Exception {
  51. byte[] fileData = fileManagerService.download(fileId);
  52. SystemFile systemFile = systemFileService.getById(fileId);
  53. String fileName = systemFile.getFileName();
  54. return ResponseEntity.ok().contentLength(fileData.length)
  55. .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\"")
  56. .contentType(MediaType.parseMediaType("application/octet-stream"))
  57. .body(new InputStreamResource(new ByteArrayInputStream(fileData)));
  58. }
  59. @PostMapping("/getFileData")
  60. @Operation(summary = "获取文件信息")
  61. public List<SystemFile> getFileData(@RequestBody List<Integer> fileIds) {
  62. LambdaQueryWrapper<SystemFile> queryWrapper = new LambdaQueryWrapper<>();
  63. queryWrapper.in(SystemFile::getId, fileIds);
  64. List<SystemFile> systemFiles = systemFileService.list(queryWrapper);
  65. return systemFiles;
  66. }
  67. @PostMapping("/deleteSystemFile")
  68. @Operation(summary = "删除文件")
  69. public String delete(@RequestBody FMSDeleteFileDTO fMSDeleteFileDTO) {
  70. fileManagerService.delete(fMSDeleteFileDTO.getIds(), fMSDeleteFileDTO.getType());
  71. return Response.success("删除系统文件成功");
  72. }
  73. }