头像上传并显示功能

前台上传页面

<form action="/registerServlet" class="form-horizontal" id="form" method="post" enctype="multipart/form-data">
   
     <div class="form-group">
            <div class="col-lg-12">
                 <label class="col-lg-3">头像</label>
                 <div class="col-lg-8"><input type="file" class="" placeholder="上传头像" id="userImg" name="userImg" onblur=""><span></span></div>
                 <span></span>
            </div>
          
            <div class="col-lg-12">
                <button type="button" class="btn btn-primary btn-lg col-lg-offset-2 col-lg-7" id="submits" onclick="tj()">注册</button>
            </div>
        </div>   
    
    </form>

后台servlet接受,详细解释都在代码注释里

		//上传头像到指定文件夹DiskFileItemFactory
        DiskFileItemFactory itemFactory = new DiskFileItemFactory();
        //文件上传对象
        ServletFileUpload upload = new ServletFileUpload(itemFactory);
        //设置相关参数
        upload.setHeaderEncoding("utf-8");//防止中文乱码
        upload.setFileSizeMax(1024 * 1024 * 10);//文件上传的最大限度
        try {
            List<FileItem> listItem = upload.parseRequest(request);
            //遍历集合解析数据
            for (FileItem item : listItem) {
                if (item.isFormField()) {//普通字段
                //form表单提交方式必须是:method="post" enctype="multipart/form-data"
                //所以获取非文件的表单内容,就不能用普通方法,可以采用下面这个:
                    //map.put(item.getFieldName(), item.getString("utf-8"));
                } else {//表示是文件
                    //文件上传
                    String filename = item.getName();//获取文件名
                    filename = FileUilt.getRealFileName(filename);
                    //防止文件名重复,加了一个UUID
                    filename = FileUilt.getUUIDFileName(filename);
                    //把文件名保存到实体类,加入数据库
                    user.setUserImg(filename);
                    //确定存储路径,可以上传到服务器,由于这里是本地项目,重启服务器会丢失,所以用固定路径
                    //HttpSession session = null;
                    //String realPath = session.getServletContext().getRealPath("/uploads/lisence");
                    String filepath = "F:\\resource\\images";
                    File imgFile = new File(filepath);
                    //判断该路径是否存在
                    if (!imgFile.exists()) {
                        imgFile.mkdirs();
                    }
                    //拼接上传路径
                    filepath = filepath + File.separator + filename;
                    //获取输入流
                    InputStream in = item.getInputStream();
                    //获取输出流
                    FileOutputStream out = new FileOutputStream(filepath);
                    //复制
                    IOUtils.copy(in, out);
                    out.close();
                    in.close();
                }
            } catch (Exception e) {
            e.printStackTrace();
        }

前台显示(我这里用的El表达式直接获取保存在session里的值)

<img class="img-circle" src="/img/${user.getUserImg()}">

访问上传的文件我们最好在服务器里配置一个虚拟路径
在conf/servlet.xml —> 找到<Host></Host>,添加如下实例代码:
<Context docBase="F:\resource\images" path="/img"/>
doBase:实际路径
path:虚拟路径
然后再开发工具里配置Tomcat,勾选 Deploy application configured in Tomcat instance

如有错误,请指正

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值