• SpringMVC multipart文件上传


    一、介绍
       spring内建的multipart支持网络程序文件上传。我们可以通过配置MultipartResolver来启动上传支持。它定义在org.springframework.web.multipart包中。spring是通过使用Commons FileUpload插件来完成MultipartResolver的。
       默认情况下,spring不处理multipar的form信息,因为开发者默认会自己去处理这部分信息,当然我们可以随时打开这个支持。这样对于每一个请求,都会查看它是否包含multipart的信息,如果没有则按流程继续执行。如果发现有,就会交给已经被声明的MultipartResolver进行处理,然后我们就能像处理其他普通属性一样处理文件上传了。
    二、使用MultipartResolver
      下面的例子显示了如何使用CommonsMultipartResolver

    [html] view plaincopy
     
    1. <bean id="multipartResolver"  
    2.     class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
    3.   
    4.     <!-- one of the properties available; the maximum file size in bytes -->  
    5.     <property name="maxUploadSize" value="100000"/>  
    6. </bean>  

    当然,我们要把所需的jar包放到lib中, 就是commons-fileupload.jar.

    三、处理一个文件上传的form
       当MultipartResolver处理完成以后,请求被处理成和普通请求一样。下面是页面文件。

    [html] view plaincopy
     
    1. <html>  
    2.     <head>  
    3.         <title>Upload a file please</title>  
    4.     </head>  
    5.     <body>  
    6.         <h1>Please upload a file</h1>  
    7.         <form method="post" action="/form" enctype="multipart/form-data">  
    8.             <input type="text" name="name"/>  
    9.             <input type="file" name="file"/>  
    10.             <input type="submit"/>  
    11.         </form>  
    12.     </body>  
    13. </html>  

    下一步是创建一个controller来处理文件上传。controller也和其他的一样,除了在我们的方法参数中使用MultipartHttpServletRequest或者MultipartFile。

    [java] view plaincopy
     
    1. @Controller  
    2. public class FileUpoadController {  
    3.   
    4.     @RequestMapping(value = "/form", method = RequestMethod.POST)  
    5.     public String handleFormUpload(@RequestParam("name") String name,  
    6.         @RequestParam("file") MultipartFile file) {  
    7.   
    8.         if (!file.isEmpty()) {  
    9.             byte[] bytes = file.getBytes();  
    10.             // store the bytes somewhere  
    11.            return "redirect:uploadSuccess";  
    12.        } else {  
    13.            return "redirect:uploadFailure";  
    14.        }  
    15.     }  
    16.   
    17. }  

    最后,我们要声明我们的controller和multipar解析器

    [html] view plaincopy
     
    1. <beans>  
    2.     <bean id="multipartResolver"  
    3.         class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>  
    4.     <!-- Declare explicitly, or use <context:annotation-config/> -->  
    5.     <bean id="fileUploadController" class="examples.FileUploadController"/>  
    6.   
    7. </beans>   

    --------------------------

    如果你对java、swing、各种框架、javascript、css、linux、数据库编程等知识很感兴趣,或者正在从事这些工作,请加入我建的群:464696550

  • 相关阅读:
    在 Tomcat 8 部署多端口项目
    tar -zxvf jdk-8u144-linux-x64.tar.gz
    linux下删除文件夹的命令
    springboot+mybatis案例
    阿里云主机密码
    查看公钥
    jenkins安装
    redis详解(包含使用场景)
    什么是JSONP?
    在CentOS7上面搭建GitLab服务器
  • 原文地址:https://www.cnblogs.com/zhangwei595806165/p/5102280.html
Copyright © 2020-2023  润新知