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中定义相同的参数名字 否则前端一直报错 没有正确传入参数

你可能感兴趣的:(问题合集,spring,boot,java,后端)