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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值