1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package com.backendsys.modules.upload.controller;
- import cn.hutool.core.convert.Convert;
- import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
- import com.backendsys.modules.common.utils.Result;
- import com.backendsys.modules.sse.emitter.SseEmitterManager;
- import com.backendsys.modules.sse.utils.SseEmitterUTF8;
- import com.backendsys.modules.upload.entity.SysUpload;
- import com.backendsys.modules.upload.service.SysUploadService;
- import io.swagger.v3.oas.annotations.tags.Tag;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.security.access.prepost.PreAuthorize;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.*;
- import org.springframework.web.multipart.MultipartFile;
- import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
- import java.io.IOException;
- @Validated
- @RestController
- @Tag(name = "上传文件")
- public class SysUploadController {
- @Autowired
- private HttpRequestUtil httpRequestUtil;
- @Autowired
- private SysUploadService sysUploadService;
- /**
- * 获取上传文件列表
- * - 缩略图 (?imageView2/1/w/100/h/100/q/60)
- */
- @GetMapping("/api/v2/upload/getUploadFileList")
- public Result getUploadFileList(@Validated SysUpload sysUpload) {
- return Result.success().put("data", sysUploadService.selectUploadList(sysUpload));
- }
- /**
- * 上传文件 (普通上传,单文件上传不超过 20MB)
- */
- @PreAuthorize("@ss.hasPermi(1.1)")
- @PostMapping("/api/upload/uploadSmall")
- public Result uploadSmall(@RequestParam("file") MultipartFile multipartFile, Long category_id) {
- return Result.success().put("data", sysUploadService.uploadSmall(multipartFile, category_id));
- }
- /**
- * [SSE] 上传进度监听
- */
- @GetMapping(value = "/api/sse/stream/upload", produces = "text/event-stream;charset=UTF-8")
- public SseEmitter streamUpload() {
- String userId = Convert.toStr(httpRequestUtil.getUserId());
- SseEmitterUTF8 emitter = new SseEmitterUTF8(Long.MAX_VALUE);
- SseEmitterManager manager = SseEmitterManager.getInstance();
- manager.addEmitter(userId, emitter);
- try {
- // 创建新连接
- manager.addEmitter(userId, emitter);
- emitter.send(SseEmitter.event().data("Connected successfully! (连接成功)"));
- } catch (IOException e) {
- // 关闭连接
- manager.emitters.remove(emitter);
- }
- return emitter;
- }
- // /**
- // * [SSE] 测试发送
- // */
- // @GetMapping("/api/v2/sse/send")
- // public String send() {
- // String message = "{\"message\": \"Hello World\"}";
- // sseUtil.send(httpRequestUtil.getUserId(), message);
- // return "success";
- // }
- /**
- * 删除上传文件
- */
- @PreAuthorize("@ss.hasPermi(1.1)")
- @DeleteMapping("/api/v2/upload/removeUploadFile")
- public Result removeUploadFile(@Validated(SysUpload.Delete.class) @RequestBody SysUpload sysUpload) {
- return Result.success().put("data", sysUploadService.removeUploadFile(sysUpload));
- }
- }
|