SpringBoot上传文件————所遇到的问题集合
SpringBoot上传文件
在SpringBoot中上传文件文件格式 此处采用的是异步对文件的上传
此处文件的上传采用的是 将前端异步传入的图片进行保存在服务器上面
所有的核心逻辑都是在Controller中实现
@Api(tags = "师资队伍") @RestController @CrossOrigin //前后端分离配置跨域访问 @RequestMapping("/uploadteacherImg") @EnableAutoConfiguration(exclude = { MultipartAutoConfiguration.class}) public class TeacherController { @Autowired private TeacherService teacherService; @ApiOperation("头像上传") @PostMapping @SystemControllerLog(description ="上传教师头像") public CommonResult uploadteacherImg(MultipartFile file) throws IOException{ System.out.println("前端传入的文件:"+file); String originalFilename = file.getOriginalFilename(); String savefileName=""; if (!file.isEmpty()) { // 防止图片名字 出现重复 savefileName = UUID.randomUUID() + "." + file.getContentType() .substring(file.getContentType().lastIndexOf("/") + 1); //获取项目根路径 String path = System.getProperty("user.dir"); //获取文件存储路径 String savePath = path + "/src/main/resources/images/"; //文件转存 try { file .transferTo(new File(savePath + File.separator + savefileName)); System.out.println("存储路径:" + savePath + File.separator + savefileName); return CommonResult.success("/images/" + savefileName, "头像上传成功!"); } catch (IOException e) { e.printStackTrace(); return CommonResult.failed("上传失败!"); } } return CommonResult.success("/images/" + savefileName, "头像上传成功!"); }
对应的就是 图片的上传 并且对图片路径的判断 以及对图片回先路径的确定
对应的图片位置的回显
// 对应前端访问后端静态资源 对应地址映射 @Configuration public class InterceptorConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // 动态获取项目所在路径 String ValuePath = System.getProperty("user.dir"); // 对应就是 项目对应的静态资源路径 String path=ValuePath+"\src\main\resources\images"; // 前端访问所在 的路径映射 registry.addResourceHandler("/images/**","/articleimages/**").addResourceLocations("file:"+path+"/");//注意最后斜杠必须有 } }
所遇到的错误合集
可能存在 对应的传入的file 是空值 解决方案
可以这样
首先判断自己的mvc执行流程配置是否正确的
在controller中进行确认 需要使用 @RestController 并且对应的接收参数处 需要使用对应的PostMapping
或者 这样
// 对应的引入执行该配置文件 @EnableAutoConfiguration(exclude = { MultipartAutoConfiguration.class}) public class UploadConfig { @Bean(name = "multipartResolver") public MultipartResolver multipartResolver() { CommonsMultipartResolver resolver = new CommonsMultipartResolver(); resolver.setDefaultEncoding("UTF-8"); resolver.setResolveLazily(true); resolver.setMaxInMemorySize(40960); //上传文件大小 resolver.setMaxUploadSize(5 * 1024 * 1024); return resolver; } }
再或者这样
-
对应的就是传递的时候 是否接收的参数 对应的需要使用@RequestParam 如果是没有参数 就需要确定使用 对应的传入的参数名字 如果是异步 切记 不能和对应的pojo中定义相同的参数名字 否则前端一直报错 没有正确传入参数
上一篇:
IDEA上Java项目控制台中文乱码