利用SpringMVC原生封装的对象实现图片上传及图片回显功能的实现及案例代码

来源:互联网 发布:word2007软件 编辑:程序博客网 时间:2024/06/06 08:41

利用SpringMVC原生封装的对象实现图片上传及图片回显功能的实现大致划分为如下两个方面:
一、图片上传环节
二、图片保存及回显环节

具体过程:
一、下面我们首先研究SpringMVC怎样上传图片开发步骤
1、导入commons-fileupload以及commons-io等相关的jar包
2、在springMVC的配置文件中配置上传文件解析器CommonsMultipartResolver

<bean id="multipartResolver" class="….CommonsMutipartResolver">                                         <!--配置上传文件的编码方式,解决上传文件的中文乱码问题-->                                        <property name="defaultEncoding" value="UTF-8"></property>                                      <!--限制上传文件的大小  字节-->                                        <property name="maxUploadSize" value="10485760"></property> </bean>     

3、开发上传文件的jsp
①、上传文件对应的form提交方式必须是POST
②、需要指定form的enctype属性为multipart/form-data
4、在SpringMVC的handler中定义接收上传文件的对象MultipartFile

@RequestMapping("/upload")public String testUpload(@RequetParam("file") MultipartFile file){                                              //在这个方法中开始读取上传文件的内容并保存在服务器磁盘上}

开发步骤详情
1、导入jar包,根据实际需求确定要导入到项目中的jar包,我的jar包如下
这里写图片描述
2、在SpringMVC中配置文件上传解析器

<!-- 文件上传解析器,设置定上传文件的大小等参数 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    <property name="defaultEncoding" value="UTF-8"></property>    <property name="maxUploadSize" value="10485760"></property></bean>

3、前端jsp源码,主要注意第13行代码(fileUpload.jsp)
这里写图片描述
4、在SpringMVC的Handler中接收上传文件

    /**     * 上传文件的handler     * @param file SpringMVC中的上传文件类型对象     * @param request Request域     */    @RequestMapping("/rockUpload")    public String rockUpload(@RequestParam("file") MultipartFile file,Map<String, Object> request) {//      MultipartFile对象的getOriginalFilename()方法用来获取上传文件的文件名称及扩展名//      在服务器端磁盘上创建上传文件的保存路径,这里特别注意文件名要具有唯一性(可以使用UUID根据时间戳随机数或者使用加密(MD5等)手段对文件名进行加密处理)        File outFile = new File("D:/upload/" + file.getOriginalFilename());        outFile.getParentFile().mkdirs();//      保存上传到服务器端后保存下来的文件名,用于图片回显        request.put("fileName", file.getOriginalFilename());        try {//          MultipartFile对象的getInputStream()方法可以获取上传文件的字节输入流InputStream            InputStream in = file.getInputStream();//          如下为CoreJava中的文件读写操作处理,这里不再赘述            FileOutputStream out = new FileOutputStream(outFile);            byte[] bs = new byte[1024*2];            int a = 0;            while ((a = in.read(bs)) != -1) {                out.write(bs, 0, a);            }            out.flush();            in.close();            out.close();        } catch (Exception e) {            e.printStackTrace();        }        return "forward:fileUpload.jsp";    }

二、图片回显过程实现:
开发步骤:
1、因为被部署到web服务器的项目无法直接访问磁盘中的资源,所以首先需要在web服务器中配置虚拟目录,用于访问磁盘下的资源。由于本类采用tomcat,所以第一步需要在tomcat的server.xml中配置用于回显图片的虚拟目录。在Eclipse的Server中配置,具体代码如下:

<!--docBase属性配置了保存上传文件的磁盘绝对路径path属性配置虚拟路径,在jsp中可以直接通过这个虚拟路径访问docBase下资源reloadable属性配置项目自动重新加载--><Context docBase="D:\upload\" path="/upload" reloadable="true"/>

tomcat中配置虚拟目录
2、虚拟目录配置完毕后就可以在jsp中直接访问磁盘下的图片文件了,第18行代码,其中${requestScope.fileName}中请求的在上传请求的Handler中保存在Request域中的文件名称request.put(“fileName”, file.getOriginalFilename());详见以上代码

<img alt="虚拟目录下的图片" src="/upload/${requestScope.fileName }"/>

这里写图片描述

到目前为止,已经给大家阐述了在SpringMVC中怎样上传图片及图片回显功能的实现,本例中是将上传的图片文件存储在了服务器磁盘中,当然我们知道在MySQL或者Oracle数据库中也可以存储图片,以blob类型存储,若你需要保存图片到数据库中的实现方式可以给我留言。

这里特别说明一下,随着云技术的不断完善,以及为了俭省网站的流量和提高网站的性能,在条件允许的情况下,请将图片等文件保存在云端

原创粉丝点击