一起学SpringMVC之文件上传

匿名 (未验证) 提交于 2019-12-02 21:52:03

概述

在Web系统开发过程中,文件上传是普遍的功能,本文主要以一个简单的小例子,讲解SpringMVC中文件上传的使用方法,仅供学习分享使用,如有不足之处,还请指正。

文件上传依赖包

如下所示,文件上传依赖的jar包主要有两个:

commons-fileupload-1.4.jar commons-io-2.6.jar

SpringMVC支持文件上传操作步骤

1. 配置支持文件上传的Bean

如下所示:主要配置默认的编码方式,和上传文件的限制大小

1 <!-- 文件上传支持 --> 2      <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 3          <property name="defaultEncoding" value="UTF-8"></property> 4          <!-- 设置最大上传内容,单位是byte --> 5          <property name="maxUploadSize" value="1024000"></property> 6      </bean>

2. 在处理方法中,以MultipartFile 进行接收

如下所示:MultipartFile表示一个存储在内存中或者磁盘临时文件类型的文件内容。可以获取对应的输入流(InputStream),然后获取输入流中的字节数组内容。

 1     /**  2      * 显示upload页面,GET访问  3      * @return  4      */  5     @RequestMapping(value="upload",method=RequestMethod.GET)  6     public ModelAndView upload(){  7         System.out.println("upload被调用了");  8         ModelAndView mav=new ModelAndView("upload");  9         return mav; 10     } 11      12     /** 13      * 用于上传文件 14      * @return 15      * @throws IOException  16      */ 17     @RequestMapping(value="upload",method=RequestMethod.POST) 18     public ModelAndView upload(String desc,@RequestParam("file") MultipartFile file) throws IOException{ 19         System.out.println("upload被调用了2"); 20         String fileName=file.getOriginalFilename(); 21         System.out.println("上传的源文件名:"+fileName); 22         System.out.println("文件描述:"+desc); 23         InputStream input= file.getInputStream(); 24         OutputStream output=new FileOutputStream("D:\\upload\\"+fileName); 25         byte[] bs=new byte[1024]; 26         int len=-1; 27         while((len=input.read(bs))!=-1){ 28             output.write(bs,0,len); 29         } 30         output.close(); 31         input.close(); 32         ModelAndView mav=new ModelAndView("success"); 33         return mav; 34     } 35     

3. 前端(Jsp)页面中

如下所示:method="post" enctype="multipart/form-data"是关键

1 <form action="upload" method="post" enctype="multipart/form-data"> 2     文件:<input type="file" name="file"> <br /> 3     描述:<input type="text" name="desc" /> <br /> 4     <input type="submit" value="上传">  5 </form>

4. 运行进行测试

如下所示,输出日志如下:

upload被调用了 upload被调用了2 上传的源文件名:readme.txt 文件描述:1235 upload被调用了

备注

我们,已不再年轻,父母已老去,孩子已长大,吃不完的苦,扛不完的责任。活要自己拼命干,钱要自己辛苦赚。
我们,已不再年轻,该吃就吃,该睡就睡,该笑就笑,该休息就休息。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!