spring mvc图片上传

1、编写页面;页面如果采用from表单,必须给类型 enctype="multipart/form-data";建议使用VUE

<form enctype="multipart/form-data" method="post">

做个简单处理,有图显示无图上传

<tr>
                <td>图片</td>
                <td>
                    <c:if test="${item.pic !=null}">
                        <img src="/pic/${item.pic}" width=100 height=100/>
                        <br/>
                    </c:if>
                    <input type="file"  name="pictureFile"/> 
                </td>
            </tr>

2、在springmvc的配置文件中配置文件上传

<!-- 上传图片配置实现类 id不变-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 上传图片的大小 B-->
        <property name="maxUploadSize" value="500000"/>
    </bean>

3、controller中接收图片简单处理(例子直接写在这里了)

这里需要用到两个工具包  commons-fileupload-1.2.2.jar      commons-fileupload-1.2.2.jar

这里xml配置的 CommonsMultipartResolver 是 MultipartFile 的实现类 ;实际上是通过spring实例化了一个文件上传的工具类;用它的接口调用完成我们的操作

@RequestMapping(value = "/updateitem.action")
    public String updateItem(MultipartFile pictureFile, QueryVo Vo) throws IllegalStateException, IOException {
        // 图片重命名
        String name = UUID.randomUUID().toString().replaceAll("-", ".");
        // 通过工具包获取后缀
        String ext = FilenameUtils.getExtension(pictureFile.getOriginalFilename());
        //保存图片
        pictureFile.transferTo(new File("F:\\upload\\" + name + "." + ext));
        //图片名称更新到数据库
        Vo.getItems().setPic(name + "." + ext);
        Integer status = itemService.updateItem(Vo.getItems());
        if (status > 0) {
            return "redirect:/itemEdit.action?id=" + Vo.getItems().getId();
            // forward
        } else {
            return "editItem";
        }
    }

 4、通过ip+端口号+pic+name访问需要配置一个虚拟服务简单的贴个图STS中图片虚拟服务配置

 

挺简单的注意的就是

1、配置图片上传的实现类的时候id别写错了,
2、form表单一定要提交格式 enctype="multipart/form-data" 并且为post

posted @ 2019-04-04 16:24  杜小二  阅读(126)  评论(0编辑  收藏  举报