TaskFileController.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package com.ydtech.modules.task.controller;
  2. import com.ydtech.core.page.HttpResult;
  3. import com.ydtech.modules.task.entity.po.TaskFile;
  4. import com.ydtech.modules.task.service.TaskFileService;
  5. import io.swagger.annotations.Api;
  6. import io.swagger.annotations.ApiOperation;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.beans.factory.annotation.Value;
  9. import org.springframework.web.bind.annotation.PostMapping;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RequestParam;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import org.springframework.web.multipart.MultipartFile;
  14. import java.io.File;
  15. import java.nio.file.Files;
  16. import java.nio.file.Path;
  17. import java.nio.file.Paths;
  18. import java.time.LocalDateTime;
  19. import java.time.format.DateTimeFormatter;
  20. @Api(tags = "任务文件controller")
  21. @RestController
  22. @RequestMapping("/task/file")
  23. public class TaskFileController {
  24. @Value("${upload.file.path}")
  25. private String uploadPath;
  26. @Value("${upload.file.url}")
  27. private String uploadUrl;
  28. private String taskPath = "/task/";
  29. @Autowired
  30. private TaskFileService taskFileService;
  31. @PostMapping("/upload")
  32. @ApiOperation("上传文件")
  33. public HttpResult<Object> upload(@RequestParam("file") MultipartFile file){
  34. if(file.isEmpty()){
  35. return HttpResult.error("文件为空,请重新上传");
  36. }
  37. try{
  38. String fileName = file.getOriginalFilename();
  39. String[] split = file.getOriginalFilename().split("\\.");
  40. String fileType = split[split.length-1];
  41. // 获取文件的字节
  42. byte[] bytes = file.getBytes();
  43. // 指定文件保存路径,这里假设保存在项目的uploads目录下
  44. String destinationFilePath = uploadPath + taskPath + String.valueOf(System.currentTimeMillis()) + "." + fileType;
  45. // 保存文件到服务器的逻辑,例如使用java.nio.file包的Files类
  46. File dir = new File(uploadPath + taskPath);
  47. if (!dir.exists()) {
  48. dir.mkdirs();
  49. }
  50. file.transferTo(new File(destinationFilePath));
  51. TaskFile taskFile = new TaskFile();
  52. taskFile.setFileName(fileName);
  53. taskFile.setFileType(fileType);
  54. taskFile.setFileUrl(uploadUrl + taskPath + String.valueOf(System.currentTimeMillis()) + "." + fileType);
  55. taskFile.setCreateTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  56. return HttpResult.ok(taskFile);
  57. }catch (Exception e){
  58. e.printStackTrace();
  59. return HttpResult.error("文件上传失败");
  60. }
  61. }
  62. @PostMapping("/uploadAnnex")
  63. @ApiOperation("上传文件附件")
  64. public HttpResult<Object> upload(@RequestParam("file") MultipartFile file,@RequestParam("taskId") String taskId){
  65. if(file.isEmpty()){
  66. return HttpResult.error("文件为空,请重新上传");
  67. }
  68. taskId = taskId.replaceAll(",","");
  69. try{
  70. String fileName = file.getOriginalFilename();
  71. String[] split = file.getOriginalFilename().split("\\.");
  72. String fileType = split[split.length-1];
  73. // 获取文件的字节
  74. byte[] bytes = file.getBytes();
  75. // 指定文件保存路径,这里假设保存在项目的uploads目录下
  76. String destinationFilePath = uploadPath + taskPath + fileName;
  77. // 保存文件到服务器的逻辑,例如使用java.nio.file包的Files类
  78. File dir = new File(uploadPath + taskPath);
  79. if (!dir.exists()) {
  80. dir.mkdirs();
  81. }
  82. file.transferTo(new File(destinationFilePath));
  83. TaskFile taskFile = new TaskFile(taskId,fileName,fileType,destinationFilePath);
  84. taskFileService.save(taskFile);
  85. }catch (Exception e){
  86. e.printStackTrace();
  87. return HttpResult.error("文件上传失败");
  88. }
  89. return HttpResult.ok("");
  90. }
  91. }