diff --git a/cutejava-front/src/store/getters.js b/cutejava-front/src/store/getters.js index 3c50443e..4186e803 100644 --- a/cutejava-front/src/store/getters.js +++ b/cutejava-front/src/store/getters.js @@ -3,8 +3,6 @@ * @type {any} */ const getters = { - deployUploadApi: state => state.api.deployUploadApi, - databaseUploadApi: state => state.api.databaseUploadApi, size: state => state.app.size, sidebar: state => state.app.sidebar, device: state => state.app.device, @@ -24,6 +22,9 @@ const getters = { swaggerApi: state => state.api.swaggerApi, websocketApi: state => state.api.websocketApi, sidebarRouters: state => state.permission.sidebarRouters, - statusConst: state => state.pipeline.statusConst + statusConst: state => state.pipeline.statusConst, + // 上传组件专用 + fileUploadApplicationApi: state => state.api.fileUploadApplicationApi, + ossUploadApplicationApi: state => state.api.ossUploadApplicationApi } export default getters diff --git a/cutejava-front/src/store/modules/api.js b/cutejava-front/src/store/modules/api.js index 8e981d6a..ba8a4329 100644 --- a/cutejava-front/src/store/modules/api.js +++ b/cutejava-front/src/store/modules/api.js @@ -16,6 +16,9 @@ const api = { fileUploadApi: baseUrl + '/api/localStorage/uploadFile', // oss上传 ossUploadApi: baseUrl + '/api/ossStorage/uploadFile', + // 上传组件专用 + fileUploadApplicationApi: baseUrl + '/api/component/CuteFileUpload/uploadLocal', + ossUploadApplicationApi: baseUrl + '/api/component/CuteFileUpload/uploadOSS', // baseUrl, baseApi: baseUrl } diff --git a/cutejava-front/src/views/components/business/CuteFileDragUpload.vue b/cutejava-front/src/views/components/business/CuteFileDragUpload.vue index c7c5644f..fea00adc 100644 --- a/cutejava-front/src/views/components/business/CuteFileDragUpload.vue +++ b/cutejava-front/src/views/components/business/CuteFileDragUpload.vue @@ -14,7 +14,7 @@ :headers="headers" :on-success="handleSuccess" :on-error="handleError" - :action="ossUploadApi" + :action="mode === 'oss' ? ossUploadApplicationApi: fileUploadApplicationApi" >
将文件拖到此处,或点击上传
@@ -36,7 +36,7 @@ export default { default: null }, /** - * 上传方式:server、oss + * 上传方式:local、oss */ mode: { type: String, @@ -52,7 +52,8 @@ export default { computed: { ...mapGetters([ 'baseApi', - 'ossUploadApi' + 'fileUploadApplicationApi', + 'ossUploadApplicationApi' ]) }, methods: { diff --git a/cutejava-front/src/views/components/business/CuteFileUpload.vue b/cutejava-front/src/views/components/business/CuteFileUpload.vue index 31146b14..cf12cf3e 100644 --- a/cutejava-front/src/views/components/business/CuteFileUpload.vue +++ b/cutejava-front/src/views/components/business/CuteFileUpload.vue @@ -13,7 +13,7 @@ :headers="headers" :on-success="handleSuccess" :on-error="handleError" - :action="ossUploadApi" + :action="mode === 'oss' ? ossUploadApplicationApi: fileUploadApplicationApi" > 点击上传
只能上传不超过100MB的文件
@@ -34,7 +34,7 @@ export default { default: null }, /** - * 上传方式:server、oss + * 上传方式:local、oss */ mode: { type: String, @@ -50,7 +50,8 @@ export default { computed: { ...mapGetters([ 'baseApi', - 'ossUploadApi' + 'fileUploadApplicationApi', + 'ossUploadApplicationApi' ]) }, methods: { diff --git a/cutejava-front/src/views/componentsDemo/CuteFileDragUploadDemo.vue b/cutejava-front/src/views/componentsDemo/CuteFileDragUploadDemo.vue index b04554cd..0eec3ce5 100644 --- a/cutejava-front/src/views/componentsDemo/CuteFileDragUploadDemo.vue +++ b/cutejava-front/src/views/componentsDemo/CuteFileDragUploadDemo.vue @@ -11,7 +11,7 @@ - + 提 交 diff --git a/cutejava-front/src/views/componentsDemo/CuteFileUploadDemo.vue b/cutejava-front/src/views/componentsDemo/CuteFileUploadDemo.vue index 595c29f3..d3934af0 100644 --- a/cutejava-front/src/views/componentsDemo/CuteFileUploadDemo.vue +++ b/cutejava-front/src/views/componentsDemo/CuteFileUploadDemo.vue @@ -11,7 +11,7 @@ - + 提 交 diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/application/CuteFileUploadApi.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/application/CuteFileUploadApi.java new file mode 100644 index 00000000..47e01d96 --- /dev/null +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/application/CuteFileUploadApi.java @@ -0,0 +1,41 @@ +package cn.odboy.system.application; + +import cn.odboy.system.framework.operalog.OperationLog; +import cn.odboy.system.service.SystemLocalStorageService; +import cn.odboy.system.service.SystemOssStorageService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +@RestController +@Api(tags = "系统组件:CuteFileUpload") +@RequestMapping("/api/component/CuteFileUpload") +public class CuteFileUploadApi { + + @Autowired + private SystemLocalStorageService systemLocalStorageService; + @Autowired + private SystemOssStorageService systemOssStorageService; + + @OperationLog + @ApiOperation("上传文件到服务器本地") + @PostMapping(value = "/uploadLocal") + public ResponseEntity uploadLocal(@RequestParam("file") MultipartFile file) { + String fileUrl = systemLocalStorageService.uploadLocal(file); + return ResponseEntity.ok(fileUrl); + } + + @OperationLog + @ApiOperation("上传文件到OSS") + @PostMapping(value = "/uploadOSS") + public ResponseEntity uploadOSS(@RequestParam("file") MultipartFile file) { + String fileUrl = systemOssStorageService.uploadFile(file); + return ResponseEntity.ok(fileUrl); + } +} diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemLocalStorageService.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemLocalStorageService.java index f81ede44..344016f7 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemLocalStorageService.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemLocalStorageService.java @@ -22,6 +22,7 @@ import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.util.StrUtil; import cn.odboy.base.KitPageResult; import cn.odboy.constant.FileTypeEnum; +import cn.odboy.framework.context.KitRequestHolder; import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.properties.AppProperties; import cn.odboy.framework.server.core.KitFileLocalUploadHelper; @@ -41,6 +42,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.util.Date; @@ -194,4 +196,40 @@ public class SystemLocalStorageService { } wrapper.orderByDesc(SystemLocalStorageTb::getId); } + + @Transactional(rollbackFor = Exception.class) + public String uploadLocal(MultipartFile multipartFile) { + long size = multipartFile.getSize(); + KitFileUtil.checkSize(properties.getOss().getMaxSize(), size); + String suffix = KitFileUtil.getSuffix(multipartFile.getOriginalFilename()); + String type = KitFileUtil.getFileType(suffix); + String uploadDateStr = DateUtil.format(new Date(), DatePattern.PURE_DATE_FORMAT); + File file = KitFileUtil.upload(multipartFile, fileUploadPathHelper.getPath() + uploadDateStr + File.separator); + if (file == null) { + throw new BadRequestException("上传失败"); + } + try { + String formatSize = KitFileUtil.getSize(size); + String prefixName = KitFileUtil.getPrefix(multipartFile.getOriginalFilename(), null); + SystemLocalStorageTb localStorage = new SystemLocalStorageTb(); + localStorage.setRealName(file.getName()); + localStorage.setName(prefixName); + localStorage.setSuffix(suffix); + localStorage.setPath(file.getPath()); + localStorage.setType(type); + localStorage.setSize(formatSize); + localStorage.setDateGroup(uploadDateStr); + systemLocalStorageMapper.insert(localStorage); + // 构建上传路径 /file/20260117/odboycn-20260117055246428.png + HttpServletRequest httpServletRequest = KitRequestHolder.getHttpServletRequest(); + StringBuffer requestURL = httpServletRequest.getRequestURL(); + String[] splits = requestURL.toString().split("/api/component/CuteFileUpload"); + String requestAddress = splits[0]; + return String.format("%s/file/%s/%s", requestAddress, uploadDateStr, localStorage.getRealName()); + } catch (Exception e) { + log.error("上传文件失败", e); + KitFileUtil.del(file); + throw e; + } + } }