#Java实现头像上传

看网课的时候视频中用到下方的路径
== String realPath = session.getServletContext().getRealPath(“/upload”);==

这样会导致一个问题,就是每次服务器重启之后,这个文件就会找不到,不过也不用担心,在企业里如果文件很多就会有专门的文件服务器,写ip地址加文件名字就行,自己解决这个bug的话,我用到的是写在本地文件中,下面开始代码环节

首先要写一个配置类,因为大多数浏览器为了安全不允许访问你的本地文件,所以写一个映射路径,这段代码的意思就是一个拦截器,只要访问addResourceHandler(“xxx”)这个路径就会映射到addResourceLocations(“mmm”)这个真实路径

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");AVATAR_TYPE.add("image/webp");}//上面是无关的东西//在这里我写在了控制层,可以传参到业务层写,JsonResult<>是模型类public JsonResult<String> updateUserAvatar (HttpSession session, MultipartFile file){if (!AVATAR_TYPE.contains(file.getContentType())){  //这些是抛出的异常可以不用管,但是也会介绍一下,file是上面的形参throw new FileTypeException();                  // 文件类型不符异常}if (file==null){throw new FileEmptyException();                 //文件空异常,如果文件是个空,扔出去}if (file.getSize()>AVATAR_MAX_SIZE){throw new FileSizeException();                   //文件大小异常}
//第一步::写一个路径,和配置类一样String realPath ="C:/Users/32189/Desktop/壁纸/test/0/";       // 随便写一个路径,但是需要和配置类中一样,注意 / 符号别漏
//                session.getServletContext().getRealPath("/upload"); 之前的路径
//第二步::用文件检测目录,没有就创建File dir = new File(realPath);                       //在这个路径下创建一个文件if (!dir.exists()){ //检测目录是否存在                   //如果这个文件不存在(目录不存在自然就创建不了文件),用文件指向目录,常用手段dir.mkdirs(); //创建目录                           //创建这个目录}
//第三步::统一后缀名String originalFilename = file.getOriginalFilename(); //获取传过来的文件的原来的名字int i =                                               //lastIndexOf(“ . ”),返回某个字符(串)在一个长的字符串中最后出现的位置originalFilename.lastIndexOf(".");        //在这里是获取后缀名那个点(.png)中点的下标String png =                                          //substring(i),是获取从下标i开始到最后的字符串,包括i,例如(.png)originalFilename.substring(i);                //substring(i,i+2)也有两个参数的用法,获取第i个和第i+2个之间的字符串String filename =                                     //随机生成一个名字加上后缀UUID.randomUUID().toString().toUpperCase()+png; //为什么随机生成一个名字呢,因为大部分企业都这么做,如果两个用户上传两个名字一样的会覆盖(UUID是生成随机字符串的一个类,toUpperCase()是字母全部大写)
//第四步::在该目录下创建一个空白文件,文件名字随意File dest = new File(dir,filename);                  //在这个目录下创建一个空白的文件
//第五步::把形参的文件数据用提供的api写入到空白文件中        try {file.transferTo(dest);//java提供了一个api,底层还是io流,需要保证后缀一致  //将file中的数据写入到这个空文件中} catch (IOException e) {throw  new FileuploadIOException();}
//第六步::拼接完整地址 目录加文件名字        String avatar ="/test/"+filename;                    //返回配置类映射路径+文件名字 变量avatar是往数据库存放的地址,也是返回前端的数据,直接可用

希望可以帮助需要的人

Java实现头像上传相关推荐

  1. java圆形头像上传_Android自定义控件实例,圆形头像(图库 + 裁剪+设置),上传头像显示为圆形,附源码...

    ** *圆形ImageView,可设置最多两个宽度不同且颜色不同的圆形边框.*设置颜色在xml布局文件中由自定义属性配置参数指定*/ public class RoundImageView exten ...

  2. java实现头像上传 前后端

    前端jsp: form表单要加入: enctype="multipart/form-data" method="post" <tr><td&g ...

  3. java图片如何上传_Java如何将图片上传到服务器

    Java如何将图片上传到服务器 发布时间:2020-11-10 17:28:18 来源:亿速云 阅读:96 作者:Leah 这篇文章将为大家详细讲解有关Java如何将图片上传到服务器,文章内容质量较高 ...

  4. java注册头像_注册页面头像上传的实现(javaweb相关)

    注册页面头像上传的实现: 1. 注册页面:register.jsp 两种方式实现图片上传: pageEncoding="UTF-8"%> register body{ mar ...

  5. Java实现用户头像上传(修改默认文件大小限制)

    概述 每次说起文件上传,就不得不提一下前端的实现方式,说来也奇怪,本博主最热门的博客居然也是文件上传,3万多的访问量占了总访问量的一多半:<传统form表单提交方式的文件上传与文件存储>, ...

  6. java cropper 上传_java web 网站头像上传处理 (springmvc +bootstrap+cropper)

    制作头像上传.请根据您的实际需求,修改代码,不完全正确,仅供参考! 前端页面设计使用bootstrap ,头像预览和剪裁工具使用cropper 后台使用springmvc. 现在来看前端的页面设计 前 ...

  7. java微信头像失效问题,将微信头像上传至七牛云

    抓取微信头像保存之后,过一段时间会出现头像失效问题,到现在还是不清楚微信头像地址失效规则,为了避免微信头像失效导致的头像显示问题,最好是微信头像上传到第三方云存储空间,这里用的是七牛云存储. 七牛云提 ...

  8. java 上传头像_javaWeb头像上传功能

    [实例简介] 一个实现可抓取编辑,头像上传功能.只要下载就可以运行,附有源码 [实例截图] [核心代码] 头像上传 └── 头像上传 └── ZoomImageDemo ├── src │   └── ...

  9. 公众号客服头像上传-java

    公众号客服头像上传:form-data格式 亲测,可以直接使用 public String addCustomer(MultipartFile file, Integer publicNumberId ...

最新文章

  1. an初始java运行环境错误_【环境问题】STS(eclipse)启动出现错误提示:an error hava occured,see the log......
  2. python列表--查找集合中重复元素的个数
  3. php memcached windows,php memcached windows安装
  4. C语言代码规范(五)函数参数个数
  5. 【深入理解Java虚拟机学习笔记】第二章 Java 内存区域与内存溢出异常
  6. Windows 2000服务器安全配置精华技巧
  7. vc浏览器_【36氪基金X一刻】零基础VC/PE行研标准班7月10日线上开课
  8. javascript ()、[]、{}的区别
  9. 如何读取 PEM 文件以获取公钥和私钥
  10. 台式计算机接口示意图,台式机硬盘接口_台式机硬盘接口图解
  11. 爬取12306验证码图片
  12. Disconnected:No supported authentication methods available
  13. matlab基础与符号计算,Chapter 7. MATLAB符号计算基础
  14. 新鲜出炉的三维动画应用领域,学3D建模好工作找不完
  15. 微信开发者工具 当前系统代理不是安全代理,是否信任?问题之完美解决
  16. ❤️Java17 发布了,YYDS!重磅!Oracle 宣布 JDK 17 可以免费商用了。。
  17. win7记事本如何转换html,win7记事本程序在哪里 64位win7记事本程序怎么安装
  18. SAP PS 第0节 PS PA有哪些知识点及IDES练习
  19. 使用XUnit的测试驱动开发过程
  20. 怎么给MP4加密、选用隐大师U盘

热门文章

  1. linux系统可以安装天正吗,Linux上安装Wine运行AutoCAD实例[多图]
  2. 速学堂第七章作业编程题答案(自写)
  3. 速(尚)学堂第十章IO技术章末作业自写答案
  4. ESP-WHO(一)ESP32 摄像头驱动分析
  5. pattern java怎么用_Pattern Java设计模式23种每个一个举例使用,名称直接对应英文,简单明了 Develop 238万源代码下载- www.pudn.com...
  6. 爬梯:Redis全解析(二)
  7. powershell脚本静默卸载软件
  8. CAD专用卸载工具,完美彻底卸载清除干净cad各种残留注册表和文件。
  9. svn分支合并到主干可能出现异常信息
  10. 利用adb指令为IPTV盒子安装应用