当前位置:   article > 正文

springboot上传头像_springboot头像上传

springboot头像上传

        学习上传头像,学完后总是忘记,今天写项目时遇到,记录下来,以后方便观看

上传头像(注意):

        1、提交方式一定是post(必须

        2、form表单中添加enctype="multipart/form-data"属性(必须

        3、后端用MultipartFile接收处理(可以使用其他API

类似如下前端实例代码(仅供参考)

 后端代码:

  1. @PostMapping("/upload")
  2. public String uploadImage(MultipartFile headImage, Model model){
  3. if(headImage.isEmpty()){
  4. model.addAttribute("error","您还没有上传图像");
  5. return "/site/setting";
  6. }
  7. //获取上传文件的后缀
  8. String fileName = headImage.getOriginalFilename();
  9. String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
  10. if(StringUtils.isEmpty(suffix)){
  11. throw new RuntimeException("文件类型错误");
  12. }
  13. //生成随机的存储文件的名字
  14. fileName = CommunityUtils.generateUUID() + "." + suffix;
  15. File dest = new File(uploadPath + "/" + fileName);
  16. try { //上传文件
  17. headImage.transferTo(dest);
  18. } catch (IOException e) {
  19. log.info("上传文件失败" + e.getMessage());
  20. throw new RuntimeException("上传文件失败" + e.getMessage());
  21. }
  22. //更新数据库的图像地址(web地址,客户端进行访问的)
  23. //http://localhost:8080/community/user/header/xxx.png
  24. User user = hostHolder.getValue();
  25. String headerUrl = domain + contextPath + "/user/header/" + fileName;
  26. userService.updateHeaderUrl(user.getId(),headerUrl);
  27. return "redirect:/index";
  28. }

文件上传成功后,数据库也成功将地址改为了web地址,接下来就是访问的环节了

前端访问,例如:

 访问到后端,通过response将存放的图片写出到浏览器上

  1. //获取服务器(本地)图片
  2. @GetMapping("/header/{fileName}")
  3. public void getHeader(@PathVariable("fileName") String fileName,HttpServletResponse response){
  4. //服务器存放地址
  5. fileName = uploadPath + "/" + fileName;
  6. //文件后缀
  7. String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
  8. response.setContentType("image/" + suffix);
  9. try (
  10. FileInputStream fis = new FileInputStream(fileName);
  11. ) {
  12. OutputStream os = response.getOutputStream();
  13. byte[] buffer = new byte[1024];
  14. int len = 0;
  15. while((len = fis.read(buffer)) != -1){
  16. os.write(buffer,0,len);
  17. }
  18. } catch (IOException e) {
  19. log.info("读取头像失败" + e.getMessage());
  20. throw new RuntimeException("浏览器读取图片失败" + e.getMessage());
  21. }
  22. }

到此整个上传差不多结束了,仅供参考,代码不足地方还望多多指出

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/393415
推荐阅读
相关标签
  

闽ICP备14008679号