spring配置环境下的文件上传以及上传的图片展示


实现的效果目的:

  把本地的图片进行上传,并且保存至当前项目的tomcat服务器和数据库中,

当需要展示图片的时候,我们拿数据库中绝对路径的相对路径,这个时候就需

要在控制层进行绝对路径的处理,处理完后,就可以通过相对路径去匹配服务

器中的图片相对路径,然后进行展示

 

注意事项:

a.存入数据库中的是决定路径,而不是相对路径,方便查找图片在电脑中存放的服务器下的位置

b.前端页面的file的input框的name不能和数据库存放图片路径的字段一样

 

 c.新增用户信息的时候,注意生日的日期格式,必须在实体类中birthday属性加上注解

文件上传以及展示的实现步骤:

1.导入依赖:三个jar包  

  


junit
junit
4.11
test



org.mybatis
mybatis
3.5.6


org.mybatis
mybatis-spring
2.0.6



mysql
mysql-connector-java
5.1.48



commons-dbcp
commons-dbcp
1.4



commons-pool
commons-pool
1.6



org.springframework
spring-jdbc
5.3.1


org.springframework
spring-aop
5.3.1


aopalliance
aopalliance
1.0


org.aspectj
aspectjweaver
1.8.13



org.springframework
spring-web
5.3.1


org.springframework
spring-webmvc
5.3.1



javax.servlet
javax.servlet-api
3.1.0
provided


javax.servlet.jsp
javax.servlet.jsp-api
2.3.3
provided



jstl
jstl
1.2



log4j
log4j
1.2.17



com.github.pagehelper
pagehelper
5.2.0



commons-fileupload
commons-fileupload
1.4


commons-io
commons-io
2.6


commons-lang
commons-lang
2.6

2.springmvc的springmvc-serlvet配置文件中配置上传文件的配置信息

<?xml version="1.0" encoding="UTF-8"?>

xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">

















3.useradd3.jsp页面需要一个file类型的input框

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt"%>



${uploadFileError}


${uploadFileError}















































placeholder="选择文件">




placeholder="选择文件">










 4.userview3.jsp查看详情页面,进行文件上传的图片展示

<%--
  Created by IntelliJ IDEA.
  User: liujie
  Date: 2020/12/18
  Time: 16:25
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    

用户详情展示

用户编码:
用户名称:
用户密码: 性别:
生日: 电话:
用户角色:
个人证件照片:
个人工作证件照:
返回

5.userController类中的addSave方法行为中实现多文件上传

 /**
     * 多文件上传
     * multipartFiles[]类型的参数是和页面的file类型的input框绑定的
     * 通过注解@RequestParam("multipartFiles")锁定进行获取文件上
     * 传的name="multipartFiles"的标签中的信息
     * @param model
     * @param request
     * @param user
     * @param multipartFiles
     * @return
     */
    @RequestMapping("addSave3")
    public String addSave3(Model model
    ,HttpServletRequest request
    ,User user
    ,@RequestParam("multipartFiles")MultipartFile[] multipartFiles){
        if(multipartFiles.length>0){

            for (int i=0;ifileSize){
                        model.addAttribute("uploadError","* 文件上传大小不能大于1mb");
                        return "user/useradd3";
                    }else if("jpg".equals(suffix)||"png".equals(suffix)
                    ||"jpeg".equals(suffix)||"pneg".equals(suffix)){
                        String fileName=System.currentTimeMillis()+RandomUtils.nextInt(1000000)+"Personal.png";
                        File targetFile = new File(path,fileName);
                        if(!targetFile.exists()){
                            //递归创建一个文件
                            targetFile.mkdirs();
                        }
                        //进行文件上传
                        try {
                            multipartFiles[i].transferTo(targetFile);
                            if(i==0){
                                idPicPath=path+File.separator+fileName;
                                user.setIdPicPath(idPicPath);
                            }
                            if(i==1){
                                workPicPath=path+File.separator+fileName;
                                user.setWorkPicPath(workPicPath);
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }else{
                        model.addAttribute("uploadError","* 上传的图片格式不正确");
                    }
                }
            }
        }
        //调用userService的userAdd方法进行用户新增
        int count = userService.userAdd(user);
        if(count>0){
            return "redirect:/jsp/user/query2";
        }
        model.addAttribute("uploadError","* 新增失败");
        return "user/useradd3";
    }

6.userController类中的selectById3方法行为中进行用户详情的展示,并且展示上传文件的图片

   /**
     * 用户的查看详情
     * @param model
     * @param id
     * @param request
     * @return
     */
    @RequestMapping("selectById3")
    public String selectById3(Model model
    ,Long id
    ,HttpServletRequest request){
        User user = userService.queryUserById(id);
        //处理数据库存储的绝对路径
        String idPicPath = user.getIdPicPath();
        String workPicPath = user.getWorkPicPath();
        String[] arridPicPath = idPicPath.split("\\\\");
        String[] arrworkPicPath = workPicPath.split("\\\\");

        String idPicRelPath=arridPicPath[arridPicPath.length-1];
        String workPicRelPath=arrworkPicPath[arrworkPicPath.length-1];
        model.addAttribute("idPicRelPath",idPicRelPath);
        model.addAttribute("workPicRelPath",workPicRelPath);
        model.addAttribute("user",user);
        return "user/userview3";
    }

7.效果截图

1)------>用户新增页面

2)------>点击选择文件后

 3)------->点击新增去userList3.jsp页面,然后点击尾页的最后一条数据

4)-------->点击查看详情,进行上传文件的图片展示成功

8.最后

文章有点长,如果你耐心地看到这,也相信你会有点收获,作者会持续进行更新,还望你的小小关注走一走