From a69b31c6d942b816e1e48e9dc017a6f52bd23ae4 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Tue, 31 May 2022 19:04:37 +0800 Subject: [PATCH] 20220527 --- src/main/java/com/xcong/farmer/cms/configurations/WebMvcConfig.java | 17 +++++ src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java | 3 + src/main/resources/application.properties | 4 + src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java | 4 + src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java | 1 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java | 1 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java | 1 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java | 115 ++++++++++++++++++++++++++++++++++--- src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java | 1 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminBase64UploadDto.java | 16 +++++ src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java | 2 src/main/java/com/xcong/farmer/cms/common/contants/AppContants.java | 3 + 12 files changed, 152 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/xcong/farmer/cms/common/contants/AppContants.java b/src/main/java/com/xcong/farmer/cms/common/contants/AppContants.java index aa6c37c..315de52 100644 --- a/src/main/java/com/xcong/farmer/cms/common/contants/AppContants.java +++ b/src/main/java/com/xcong/farmer/cms/common/contants/AppContants.java @@ -21,4 +21,7 @@ */ public static final String TOKEN_START_WITH = "Bearer "; + public static final String PICTURE_PATH = "D:\\Tools\\"; + + } diff --git a/src/main/java/com/xcong/farmer/cms/configurations/WebMvcConfig.java b/src/main/java/com/xcong/farmer/cms/configurations/WebMvcConfig.java index 86faea6..c5c60a5 100644 --- a/src/main/java/com/xcong/farmer/cms/configurations/WebMvcConfig.java +++ b/src/main/java/com/xcong/farmer/cms/configurations/WebMvcConfig.java @@ -1,11 +1,16 @@ package com.xcong.farmer.cms.configurations; +import com.xcong.farmer.cms.common.contants.AppContants; +import com.xcong.farmer.cms.configurations.properties.ApplicationProperties; import com.xcong.farmer.cms.utils.SpringContextHolder; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringBootConfiguration; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** @@ -37,4 +42,16 @@ public SpringContextHolder springContextHolder() { return new SpringContextHolder(); } + + @Value("${upload.file.location}") + private String fileLocation; + @Value("${upload.file.path}") + private String filePath; + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + //注册配置类,使用addResourceHandlers方法,将本地路径savePath映射到saveUrl路由上。 + registry.addResourceHandler(filePath).addResourceLocations(fileLocation); + WebMvcConfigurer.super.addResourceHandlers(registry); + } + } diff --git a/src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java b/src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java index a9a2ca4..809259f 100644 --- a/src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java +++ b/src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java @@ -17,4 +17,8 @@ private boolean debug; + private String fileStoragePath; + + private String staticResourceUrl; + } diff --git a/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java b/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java index 7d8f85e..9456823 100644 --- a/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java +++ b/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java @@ -43,6 +43,9 @@ .antMatchers("/webjars/**").permitAll() .antMatchers("/v2/**").permitAll() .antMatchers("/api/common/login").permitAll() + .antMatchers("/api/common/doUpload").permitAll() + .antMatchers("/api/common/uploadFile").permitAll() + .antMatchers("/image/**").permitAll() .anyRequest().authenticated() .and().apply(securityConfiguereAdapter()); } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java index 1d87867..e1e58f4 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java +++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java @@ -28,7 +28,7 @@ @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminColumnVo.class)}) @PostMapping(value = "/columnInPage") public Result getColumnInPage(@RequestBody @Valid AdminColumnDto adminColumnDto) { - log.info("--->{}", SecurityContextHolder.getContext().getAuthentication()); +// log.info("--->{}", SecurityContextHolder.getContext().getAuthentication()); return iColumnService.getColumnInPage(adminColumnDto); } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java index 2b5bc78..91c6b5f 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java +++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java @@ -2,28 +2,32 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.crypto.SecureUtil; -import com.alibaba.fastjson.JSONObject; import com.xcong.farmer.cms.common.contants.AppContants; import com.xcong.farmer.cms.common.response.Result; -import com.xcong.farmer.cms.common.system.bean.LoginUserBean; -import com.xcong.farmer.cms.common.system.dto.LoginDto; +import com.xcong.farmer.cms.configurations.properties.ApplicationProperties; +import com.xcong.farmer.cms.modules.system.dto.AdminBase64UploadDto; import com.xcong.farmer.cms.modules.system.dto.AdminLoginDto; import com.xcong.farmer.cms.modules.system.service.ICommonService; -import com.xcong.farmer.cms.modules.system.service.IUserService; -import com.xcong.farmer.cms.utils.RedisUtils; +import com.xcong.farmer.cms.utils.SpringContextHolder; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.core.Authentication; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.util.FileCopyUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import sun.misc.BASE64Decoder; import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import java.util.HashMap; -import java.util.Map; +import java.io.File; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; + +import cn.hutool.core.util.ObjectUtil; + + @RestController @RequestMapping(value = "/api/common") @@ -59,4 +63,93 @@ return iCommonService.memberLogout(); } + private Long maxSize = 1024*1024*100L; + + + +// /** +// * 文件上传方法 +// */ +// @ApiOperation(value = "文件上传", notes = "文件上传") +// @PostMapping(value = "/doUpload") +// public Result doFileUpload(@RequestBody @Validated AdminBase64UploadDto uploadDto){ +// // 文件保存目录路径 +// String savePath = AppContants.PICTURE_PATH; +// // 文件保存目录URL +// String saveUrl = resourceUrl; +// // 保存和访问路径检查 +// if (StrUtil.isEmpty(saveUrl) || StrUtil.isEmpty(savePath)) { +// return Result.fail("文件上传失败"); +// } +// // 检查目录 +// File uploadDir = new File(savePath); +// if (!uploadDir.isDirectory()) { +// uploadDir.mkdir(); +// } +// log.info("uploadDto:" + uploadDto.getBase64Str()); +// BASE64Decoder decoder = new BASE64Decoder(); +// byte[] bytes = new byte[0]; +// try { +// bytes = decoder.decodeBuffer(uploadDto.getBase64Str()); +// } catch (IOException e) { +// return Result.fail("上传文件失败"); +// } +// +// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); +// String ymd = sdf.format(new Date()); +// savePath += ymd + "/"; +// saveUrl += ymd + "/"; +// File dirFile = new File(savePath); +// if (!dirFile.exists()) { +// dirFile.mkdirs(); +// } +// if (bytes.length > maxSize) { +// return Result.fail("上传文件大小超过限制"); +// } +// String newFileName = IdUtil.simpleUUID() + IdUtil.simpleUUID() + ".png"; +// File uploadedFile = new File(savePath, newFileName); +// try { +// FileCopyUtils.copy(bytes, uploadedFile); +// } catch (Exception e) { +// return Result.fail("上传文件失败"); +// } +// log.info("saveUrl:" + saveUrl); +// String visitPath = saveUrl + newFileName; +// log.info("上传一个文件:" + newFileName); +// log.info("访问路径:" + visitPath); +// +// return Result.ok("上传成功",visitPath); +// } + + @Value("${static.resource.url}") + private String resourceUrl; + + @ApiOperation(value = "文件上传", notes = "文件上传") + @PostMapping("/uploadFile") + public Result uploadFile(@RequestParam("file") MultipartFile file) throws Exception { + + // 文件保存目录路径 + String savePath = AppContants.PICTURE_PATH; + // 文件保存目录URL + String saveUrl = resourceUrl; + // 检查目录 + File uploadDir = new File(savePath); + if (!uploadDir.isDirectory()) { + uploadDir.mkdir(); + } + //获得文件的后缀 + String filename = IdUtil.simpleUUID() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); + File filepath = new File(savePath + filename); + try { + //存文件 + file.transferTo(filepath); + } catch (IOException e) { + e.printStackTrace(); + } + String visitPath = (saveUrl + filename); + return Result.ok("上传成功",visitPath); + } + + + } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java index d868849..0311888 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java +++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java @@ -30,7 +30,6 @@ @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminMenuVo.class)}) @PostMapping(value = "/menuInPage") public Result getMenuInPage(@RequestBody @Valid AdminMenuDto adminMenuDto) { - log.info("--->{}", SecurityContextHolder.getContext().getAuthentication()); return iMenuService.getMenuInPage(adminMenuDto); } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java index 89970dc..dc1c9c4 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java +++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java @@ -28,7 +28,6 @@ @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminNavigationBarVo.class)}) @PostMapping(value = "/barInPage") public Result getBarInPage(@RequestBody @Valid AdminNavigationBarDto adminNavigationBarDto) { - log.info("--->{}", SecurityContextHolder.getContext().getAuthentication()); return iNavigationBarService.getBarInPage(adminNavigationBarDto); } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java index 81a54a4..bf6952d 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java +++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java @@ -30,7 +30,6 @@ @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminRoleVo.class)}) @PostMapping(value = "/userInPage") public Result getUserInPage(@RequestBody @Valid AdminRoleDto adminRoleDto) { - log.info("--->{}", SecurityContextHolder.getContext().getAuthentication()); return iRoleService.getRoleInPage(adminRoleDto); } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java index e1b28aa..83e1d8b 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java +++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java @@ -33,7 +33,6 @@ @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminUserVo.class)}) @PostMapping(value = "/userInPage") public Result getUserInPage(@RequestBody @Valid AdminUserDto adminUserDto) { - log.info("--->{}", SecurityContextHolder.getContext().getAuthentication()); return iUserService.getUserInPage(adminUserDto); } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminBase64UploadDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminBase64UploadDto.java new file mode 100644 index 0000000..88be92e --- /dev/null +++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminBase64UploadDto.java @@ -0,0 +1,16 @@ +package com.xcong.farmer.cms.modules.system.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +@ApiModel(value = "AdminBase64UploadDto", description = "参数接收类") +public class AdminBase64UploadDto { + + @NotBlank + @ApiModelProperty(value = "base64字符串") + public String base64Str; +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..5f5d326 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,4 @@ +# �����ϴ�ͼƬ��·���ͷ���ͼƬͼƬ��·�� +upload.file.location=file:D:/Tools/ +upload.file.path =/image/** +static.resource.url =http://localhost:8878/image/ -- Gitblit v1.9.1