zoukankan      html  css  js  c++  java
  • 一起学SpringMVC之文件上传

    概述

    在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被调用了

    备注

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

  • 相关阅读:
    hdu 2485 Destroying the bus stations 迭代加深搜索
    hdu 2487 Ugly Windows 模拟
    hdu 2492 Ping pong 线段树
    hdu 1059 Dividing 多重背包
    hdu 3315 My Brute 费用流,费用最小且代价最小
    第四天 下载网络图片显示
    第三天 单元测试和数据库操作
    第二天 布局文件
    第一天 安卓简介
    Android 获取存储空间
  • 原文地址:https://www.cnblogs.com/hsiang/p/11443405.html
Copyright © 2011-2022 走看看