Java用户修改头像接口

Java实现上传头像

  • 在项目开发中我们会有上传头像,修改头像的操作,controller代码如下
	//设置上传文件的最大值
    public static final int AVATAR_MAX_SIZE = 10 * 1024 *1024;

    //设置上传文件类型
    public static final List<String> AVATAR_TYPE = new ArrayList<>();

    //使用静态块给图片类型赋值
    static {
        AVATAR_TYPE.add("image/jpeg");
        AVATAR_TYPE.add("image/png");
        AVATAR_TYPE.add("image/bmp");
        AVATAR_TYPE.add("image/gif");
    }


	/**
     * 用户修改头像方法
     * @param session
     * @param file
     * @return
     */
    @RequestMapping("/changeAvatar")
    public JsonResult<String> changeAvatar(HttpSession session,
                                           @RequestParam("file") MultipartFile file){

        //这里面抛出的异常是我们自定义的异常,根据项目需要修改
        if (file.isEmpty()){
            throw new FileEmptyException("文件为空");
        }
        if (file.getSize() > AVATAR_MAX_SIZE){
            throw new FileSizeException("文件大小超出限制");
        }
        if (!AVATAR_TYPE.contains(file.getContentType())){
            throw new FileTypeException("文件类型异常");
        }

        //获取session中的上传路径
        String parent = session.getServletContext()
                .getRealPath("upload");

        //判断这个路径上面的文件是否存在,不存在就创建
        File dir = new File(parent);
        if (!dir.exists()){
            dir.mkdirs();
        }
        //获取文件的名称
        String originalFilename = file.getOriginalFilename();
        //获取文件后缀名suffix
        int index = originalFilename.lastIndexOf(".");
        String suffix = originalFilename.substring(index);

        //使用uuid重新生成文件名
        String fileName = UUID.randomUUID().toString().toUpperCase() + suffix;

        //将file文件中的数据写入到dest中
        File dest = new File(dir,fileName);
        try {
            file.transferTo(dest);
        } catch (FileStateException e){
            throw new FileSizeException("文件状态异常");
        } catch (IOException e) {
            throw new FileUploadIOException("文件读写异常");
        }

        //获取到文件最后要上传的路径
        String avatar = "/upload/" + fileName;

        //根据业务调用定义的service层的方法,进行操作
        userService.changeAvatar(getuidFromSession(session),avatar,getUsernameFromSession(session));

        return new JsonResult<>(OK,avatar);
    }
  • 前端代码
<script type="text/javascript">
    		//页面加载时方法,获取cookie中存放的头像路径
			$(document).ready(function () {
				var avatar = $.cookie("avatar");
				$("#img-avatar").attr("src",avatar);
			})
    		//修改头像上传按钮的点击事件
			$("#btn-change-avatar").click(function () {
				$.ajax({
							url:"/users/changeAvatar",
							type:"POST",
							data:new FormData($("#form-change-avatar")[0]),
							processData: false,//处理数据的形式,关闭处理数据
							contentType: false,//提交数据形式,关机默认提交数据的形式
							dataType:"JSON",
							success:function (data) {
								if (data.state === 200){
									alert("上传成功");
									$("#img-avatar").attr("src",data.data);
                                    //将头像路径更新保存到cookie中设置过期时间为7天
									$.cookie("avatar",data.data,{expires:7})
								}else {
									alert("上传失败")
								}
							},
							error:function (err) {
								alert("登录时产生未知异常"+err.message)
							}
						}
				);
			})
		</script>
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java Spring Boot中实现用户头像上传和信息保存可以通过以下步骤实现: 1. 前端页面:创建一个用户信息编辑页面,该页面包含一个文件上传控件和其他用户信息输入框,用户可以选择并上传头像图片,同时输入其他的用户信息。 2. 控制器层:创建一个控制器用于处理用户信息和头像的上传请求。在该控制器中,配置一个POST请求的映射路径,接收前端页面传来的用户信息和头像图片文件。使用@RequestPart注解接收文件,使用@ModelAttribute注解接收其他用户信息。 3. 服务层:创建一个服务类用于保存用户信息和头像文件。在该服务类中,可以使用Spring Boot的MultipartFile类来处理上传的文件。可以使用File类创建一个唯一的文件名,用于保存用户头像文件。将文件保存到服务器的指定位置。 4. 数据库交互:在保存用户信息时,可以使用Spring Data JPA来操作数据库。可以创建一个用户实体类和一个对应的Repository接口,用于对用户数据进行增删改查的操作。在保存用户信息时,将用户信息保存到数据库表中。 5. 前端展示:用户头像上传成功后,可以将头像显示到用户信息编辑页面上供用户预览。同时可以将用户头像的URL保存到用户信息表中,用于在其他页面展示用户头像。 6. 其他功能:可以为用户提供修改头像的功能,在用户个人中心或者其他页面上提供用户头像修改入口。用户可以重新选择并上传新的头像图片,同时更新数据库中的用户头像URL。 通过以上步骤,就能够在Java Spring Boot中实现用户头像上传和信息保存的功能。整个过程中需要注意文件的上传和保存路径的配置,以及与数据库进行交互的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding_Bryce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值