关于springMVC的图片上传及显示问题

废话不多说,直接上代码,解析看下面:

maven加入依赖包:

 <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>

springMVC的配置文件中加入:

		<!-- 4.3.支持文件上传 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 设置默认编码 -->
		<property name="defaultEncoding" value="utf-8"></property>
		<!-- 上传图片最大大小5M-->
		<property name="maxUploadSize" value="5242440"></property>
	</bean>

 

jsp页面加入:

<a href="#" target="_top"><img src="${pageContext.request.contextPath }/${user.uimg}" style="width:75px;height:75px;"  alt="暂无显示"></a>

其中user是从数据库查询到的内容,img是user的一个属性,String类型

用户注册界面(想想还是贴上吧):

<form name="tijiao" method="post"  action="/mdnc/user/registerUser" enctype="multipart/form-data">
    <div class="pg">
        <div class="close"> </div>
        <div class="head-info">
            <label class="lbl-1"> </label>
            <label class="lbl-2"> </label>
            <label class="lbl-3"> </label>
        </div>
        <div class="pg_body">
            <div class="menu">用户名:</div>
            <div class="kong">
                <input id="username_text" type="text" name="uname" placeholder="请输入用户名" onblur="check()"><span id="username" class="tian" style="margin-top: 4px">*(为必填)<span>
            </div>
            <div class="menu">真实姓名:</div>
            <div class="kong">
                <input id="really_name" type="text" name="realname">
            </div>
            <div class="menu">性别:</div>
            <div class="kong" style="width:200px;">
                男<input type="radio" name="sex" value="男" checked="checked">
                女 <input type="radio" name="sex" value="女">
            </div>
            <div class="menu">密码:</div>
            <div class="kong">
                <input id="passwd_text" type="password" name="pwd" onblur="check()">
                <span id="password" class="tian" style="margin-top: -25px">*(为必填)<span>
            </div>
            <div class="menu">确认密码:</div>
            <div class="kong">
                <input id="repasswd_text" type="password"  onblur="check()">
                <span id="sure_password" class="tian">*(为必填)<span>
            </div>
            <div class="menu">电话号码:</div>
            <div class="kong">
                <input id="tel_text" type="text" name="tel"
                       onblur="check()">
                <span id="tellphone" class="tian">*(为必填)<span>
            </div>
            <div class="menu">邮箱地址:</div>
            <div class="kong">
                <input id="email_text" type="text" name="email" onblur="check()">
                <span id="mail" class="tian">*(为必填)</span>
            </div>
            <div class="menu">头像上传:    </div>
            <div class="kong">
                <input type="file" name="file" value="选择头像" accept="image/*">
            </div>
        </div>
        <div class="register">
            <input id="id_register" type="submit" name="register" value="注册">
            <input id="id_cancel" type="button" name="cancel" value="取消" onclick="checkReload()">
        </div>
    </div>
</form>

表单验证逻辑:

 /**
     * 用户注册
     */
    @RequestMapping("registerUser")
    public String registerUser(@RequestParam("file") MultipartFile myfile , Users users, HttpServletRequest request) {
//数据库存在
        List<Users> ulist=userService.findByName(users.getUname());
        if(ulist.size()>0){
            return "login";
        }
        //文件为空时
      if(myfile.isEmpty()){
            System.out.println("文件未上传");
        }else{
          try {
              //上传后的地址,注意("/upload")是表示文件上传后的目标文件夹
              String realPath = request.getSession().getServletContext().getRealPath(uimgPath);
              System.out.println("打印文件上传的路径"+realPath);
              //获取文件名
              String filename = myfile.getOriginalFilename();
              //获取文件后缀名
              String extensionname = filename.substring(filename.lastIndexOf(".") + 1);
              //给上传的文件起别名,有很多种方式
              String newFilename=String.valueOf(System.currentTimeMillis())+"."+extensionname;
              //创建File对象,传入目标路径参数,和新的文件别名
              File dir=new File(realPath,newFilename);
              users.setUimg(new File(uimgPath,newFilename).toString());
              if (!dir.exists()){//如果dir代表的文件不存在,则创建它,
                  dir.mkdirs();//
              }
              //如果存在则直接执行下面操作
              myfile.transferTo(dir);//将上传的实体文件复制到指定目录upload下
          } catch (IOException e) {
              e.printStackTrace();
          }
        }
        users.setId(userService.getMaxUid());
        users.setUtype("1");
        userService.registerUser(users);
         return "login";
    }

写出了主要逻辑,这里使用使用了ssm框架,uimg是配置路径,可以写死,我方便后期更改,把图片路径存在了配置文件中,以下是配置文件内容:

uimg.path=/uimgs

最后运行上传图片,打开jsp页面就可以看见图片显示了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值