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

    备注

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

  • 相关阅读:
    突然想谈谈——我的软件测试入门
    js+rem动态计算font-size的大小,适配各种手机设备!
    iOS 如何打测试包,直接给测试人员使用(绝对的新手入门)
    去掉无用的多余的空格(string1.前后空格,2.中间空格)
    iOS 自定义键盘ToolBar(与键盘的弹出、收起保持一致)
    iOS上线...踩坑
    iOS10 导航条,这个二狗子变了...踩坑
    ios程序发布测试打包
    获取毫秒级时间戳
    弹簧动画效果(系统自带方法)
  • 原文地址:https://www.cnblogs.com/hsiang/p/11443405.html
Copyright © 2011-2022 走看看