FileMangerController.java 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. @GetMapping("/downloadSystemFile")
  40. @Operation(summary = "取出文件")
  41. public ResponseEntity<InputStreamResource> download(Integer fileId) throws Exception {
  42. byte[] fileData = fileManagerService.download(fileId);
  43. SystemFile systemFile = systemFileService.getById(fileId);
  44. String fileName = systemFile.getFileName();
  45. return ResponseEntity.ok().contentLength(fileData.length)
  46. .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\"")
  47. .contentType(MediaType.parseMediaType("application/octet-stream"))
  48. .body(new InputStreamResource(new ByteArrayInputStream(fileData)));
  49. }
  50. @PostMapping("/getFileData")
  51. @Operation(summary = "获取文件信息")
  52. public List<SystemFile> getFileData(@RequestBody List<Integer> fileIds) {
  53. LambdaQueryWrapper<SystemFile> queryWrapper = new LambdaQueryWrapper<>();
  54. queryWrapper.in(SystemFile::getId, fileIds);
  55. List<SystemFile> systemFiles = systemFileService.list(queryWrapper);
  56. return systemFiles;
  57. }
  58. @PostMapping("/deleteSystemFile")
  59. @Operation(summary = "删除文件")
  60. public String delete(@RequestBody FMSDeleteFileDTO fMSDeleteFileDTO) {
  61. fileManagerService.delete(fMSDeleteFileDTO.getIds(), fMSDeleteFileDTO.getType());
  62. return Response.success("删除系统文件成功");
  63. }
  64. }