SysFileMultipartController.java 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.backendsys.modules.upload.controller;
  2. import com.backendsys.modules.common.aspect.SysLog;
  3. import com.backendsys.modules.common.utils.Result;
  4. import com.backendsys.modules.upload.entity.MultipartUploadParams;
  5. import com.backendsys.modules.upload.entity.SysFile;
  6. import com.backendsys.modules.upload.service.SysFileMultipartService;
  7. import io.swagger.v3.oas.annotations.Operation;
  8. import io.swagger.v3.oas.annotations.tags.Tag;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.security.access.prepost.PreAuthorize;
  11. import org.springframework.validation.annotation.Validated;
  12. import org.springframework.web.bind.annotation.*;
  13. import org.springframework.web.multipart.MultipartFile;
  14. @Validated
  15. @RestController
  16. @Tag(name = "上传文件 (分块上传)")
  17. public class SysFileMultipartController {
  18. @Autowired
  19. private SysFileMultipartService sysFileMultipartService;
  20. /*
  21. 分块上传的流程:
  22. 1.初始化分块上传(Initiate Multipart Upload),得到 UploadId。
  23. 2.使用 UploadId 上传分块(Upload Part)。
  24. 3.完成分块上传(Complete Multipart Upload)。
  25. */
  26. @SysLog("初始化分块上传")
  27. @Operation(summary = "初始化分块上传")
  28. @PreAuthorize("@sr.hasPermission('1.1.3')")
  29. @PostMapping("/api/upload/multipartUploadInit")
  30. // public Result multipartUploadInit(Long category_id, Integer upload_chunk_count, String md5) {
  31. public Result multipartUploadInit(@Validated(MultipartUploadParams.Init.class) @RequestBody MultipartUploadParams multipartUploadParams) {
  32. return Result.success().put("data", sysFileMultipartService.multipartUploadInit(multipartUploadParams));
  33. }
  34. @SysLog("上传分块")
  35. @Operation(summary = "上传分块")
  36. @PreAuthorize("@sr.hasPermission('1.1.3')")
  37. @PostMapping("/api/upload/multipartUpload")
  38. public Result multipartUpload(@RequestParam("file") MultipartFile multipartFile, String upload_id, Integer upload_chunk_index) {
  39. return Result.success().put("data", sysFileMultipartService.multipartUpload(multipartFile, upload_id, upload_chunk_index));
  40. }
  41. @SysLog("合并分块")
  42. @Operation(summary = "合并分块")
  43. @PreAuthorize("@sr.hasPermission('1.1.3')")
  44. @PostMapping("/api/upload/multipartUploadComplete")
  45. public Result multipartUploadComplete(String upload_id, Integer is_watermark) {
  46. return Result.success().put("data", sysFileMultipartService.multipartUploadComplete(upload_id, is_watermark));
  47. }
  48. @Operation(summary = "查询分块上传情况")
  49. @PreAuthorize("@sr.hasPermission('1.1.3')")
  50. @GetMapping("/api/upload/getListParts")
  51. public Result getListParts(String upload_id, String object_key) {
  52. return Result.success().put("data", sysFileMultipartService.listParts(upload_id, object_key));
  53. }
  54. }