springboot 上传头像文件

1、前端表单代码示例

springboot 上传头像文件_第1张图片

 2、前端ajax异步交互代码

springboot 上传头像文件_第2张图片

 3、控制器端代码实现

定义两个常量作为文件大小和文件类型标准

springboot 上传头像文件_第3张图片

需要更改servlet默认的文件极大值

 控制器主体(业务方法保存相对地址的字符串)

@RequestMapping(value = "updateAvatar")
    public JsonResult updateAvatar(HttpSession session, MultipartFile file){
        JsonResult jsonResult = new JsonResult<>();

        //判断file文件异常状态
        if(file.isEmpty()){
            throw new FileEmptyException("文件为空");
        }
        if(file.getSize() > AVATAR_MAX_SIZE){
            throw new FileSizeException("文件超出限制");
        }
        String contentType = file.getContentType();
        if(!AVATAR_TYPE.contains(contentType)){
            throw new FileTypeException("文件类型错误");
        }

        //创建存放文件的文件夹
        String path = session.getServletContext().getRealPath("upload");
        File dir = new File(path);
        if(!dir.exists()){
            dir.mkdirs();
        }

        //更改文件名(防止原文件名上传过多,采用UUID随机作为文件名)
        String originalFilename = file.getOriginalFilename();
        int index = originalFilename.lastIndexOf(".");
        String suffix = originalFilename.substring(index);
        String fileName = UUID.randomUUID().toString().toUpperCase()+suffix;

        //创建新文件至文件夹下,并将file文件内容转换至新文件下
        File dest = new File(dir, fileName);
        try {
            file.transferTo(dest);
        } catch (IOException e) {
            e.printStackTrace();
        }

        //调用业务方法,将新文件名的相对路径存入avatar字段下
        Integer uid = (Integer) session.getAttribute("uid");
        String username = (String) session.getAttribute("username");
        String avatar = "/upload/" + fileName;
        userService.updateAvatar(uid,username,avatar);

        //返回相对路径及状态码至前端
        jsonResult.setState(200);
        jsonResult.setData(avatar);
        return jsonResult;
    }
MultipartFile是框架封装的数据类型,可无缝衔接前端所传输的file类型数据;

4、前端事件调整(为响应上传后,切换页面自动加载图像,将文件地址存入cookie中)

导入cookie所依赖的包

 ajax交互成功后

springboot 上传头像文件_第4张图片

 在页面加载时,调用cookie中的地址,对图像地址进行设置

springboot 上传头像文件_第5张图片

 

你可能感兴趣的:(java,ajax,javascript)