SpringMVC上传图片

1.问题说明:

在我们平时练习时,上传图片都是上传到Tomcat服务上,但是这样的缺点也是显而易见的,那就是随着Tomcat服务器的重启,所上传的图片也会随之被清空,所以要想在服务器重启时图片不被清空,我们可以在Tomcat中配置虚拟路径,将我们上传图片的路径映射到硬盘上以解决服务器重启后图片消失问题.

2.配置虚拟路径:

在tomcat下conf/server.xml中添加:

<Context docBase="E:\test\" path="/pic" reloadable="false"/>

访问http://localhost:8080/pic即可访问E:\test\下的图片。

也可以通过eclipse配置,如下图:

 3.加入文件上传jar包:

把两个jar包放到工程的lib文件夹中

 4.在springmvc.xml中配置文件上传解析器

 <!-- 上传图片配置实现类 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="50000000"></property>    
    </bean>

5.jsp页面的准备:

<tr>
                <td>商品图片</td>
                <td>
                    <c:if test="${item.pic !=null}">

                        //配置的虚拟路径会将localhost:8080/pic/xxx.jpg映射到E:/test目录下相应的图片文件
                        <img src="/pic/${item.pic}" width=100 height=100/> 
                        <br/>
                    </c:if>
                    <input type="file"  name="pictureFile"/>
                </td>
            </tr>

设置表单可以进行文件上传,如下:

<form id="itemForm"    action="${pageContext.request.contextPath}//updateitem.action" method="post" enctype="multipart/form-data">

 6.上传图片Controller:

@RequestMapping("/updateitem.action")
    public String saveItems(QueryVo vo,MultipartFile pictureFile) throws Exception {
        
        //保存图片到E:\test   为上传的图片生成图片名
        String name = UUID.randomUUID().toString().replaceAll("-", "");
        
        //获取文件后缀名
        String ext = FilenameUtils.getExtension(pictureFile.getOriginalFilename());
        
        //保存图片到指定地点
        pictureFile.transferTo(new File("E:\\test\\" + name + "." + ext));
        
        //保存到数据库
        vo.getItems().setPic(name + "." + ext);
        
        itemsService.saveEditItems(vo.getItems());
            
        return "redirect:/itemsEdit.action?id=" + vo.getItems().getId() ;
    }

到此,图片上传结束.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值