SysUploadController.java 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package com.backendsys.modules.upload.controller;
  2. import cn.hutool.core.convert.Convert;
  3. import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
  4. import com.backendsys.modules.common.utils.Result;
  5. import com.backendsys.modules.sse.emitter.SseEmitterManager;
  6. import com.backendsys.modules.sse.utils.SseEmitterUTF8;
  7. import com.backendsys.modules.upload.entity.SysUpload;
  8. import com.backendsys.modules.upload.service.SysUploadService;
  9. import io.swagger.v3.oas.annotations.tags.Tag;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.security.access.prepost.PreAuthorize;
  12. import org.springframework.validation.annotation.Validated;
  13. import org.springframework.web.bind.annotation.*;
  14. import org.springframework.web.multipart.MultipartFile;
  15. import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
  16. import java.io.IOException;
  17. @Validated
  18. @RestController
  19. @Tag(name = "上传文件")
  20. public class SysUploadController {
  21. @Autowired
  22. private HttpRequestUtil httpRequestUtil;
  23. @Autowired
  24. private SysUploadService sysUploadService;
  25. /**
  26. * 获取上传文件列表
  27. * - 缩略图 (?imageView2/1/w/100/h/100/q/60)
  28. */
  29. @GetMapping("/api/v2/upload/getUploadFileList")
  30. public Result getUploadFileList(@Validated SysUpload sysUpload) {
  31. return Result.success().put("data", sysUploadService.selectUploadList(sysUpload));
  32. }
  33. /**
  34. * 上传文件 (普通上传,单文件上传不超过 20MB)
  35. */
  36. @PreAuthorize("@ss.hasPermi(1.1)")
  37. @PostMapping("/api/upload/uploadSmall")
  38. public Result uploadSmall(@RequestParam("file") MultipartFile multipartFile, Long category_id) {
  39. return Result.success().put("data", sysUploadService.uploadSmall(multipartFile, category_id));
  40. }
  41. /**
  42. * [SSE] 上传进度监听
  43. */
  44. @GetMapping(value = "/api/sse/stream/upload", produces = "text/event-stream;charset=UTF-8")
  45. public SseEmitter streamUpload() {
  46. String userId = Convert.toStr(httpRequestUtil.getUserId());
  47. SseEmitterUTF8 emitter = new SseEmitterUTF8(Long.MAX_VALUE);
  48. SseEmitterManager manager = SseEmitterManager.getInstance();
  49. manager.addEmitter(userId, emitter);
  50. try {
  51. // 创建新连接
  52. manager.addEmitter(userId, emitter);
  53. emitter.send(SseEmitter.event().data("Connected successfully! (连接成功)"));
  54. } catch (IOException e) {
  55. // 关闭连接
  56. manager.emitters.remove(emitter);
  57. }
  58. return emitter;
  59. }
  60. // /**
  61. // * [SSE] 测试发送
  62. // */
  63. // @GetMapping("/api/v2/sse/send")
  64. // public String send() {
  65. // String message = "{\"message\": \"Hello World\"}";
  66. // sseUtil.send(httpRequestUtil.getUserId(), message);
  67. // return "success";
  68. // }
  69. /**
  70. * 删除上传文件
  71. */
  72. @PreAuthorize("@ss.hasPermi(1.1)")
  73. @DeleteMapping("/api/v2/upload/removeUploadFile")
  74. public Result removeUploadFile(@Validated(SysUpload.Delete.class) @RequestBody SysUpload sysUpload) {
  75. return Result.success().put("data", sysUploadService.removeUploadFile(sysUpload));
  76. }
  77. }