文件上传——Spring MVC方式

2020-04-28 16:01:28来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

文件上传——Spring MVC方式

  • 必要前提

    • form表单的enctype取值必须是multipart/form-data。enctype的功能是请求正文的类型

    • method必须是post

    • 需要有<input type="file" />标签

    • 使用commons-fileupload组件实现文件,需要导入该组件相应的支撑jar包

      • commons-fileupload-1.3.1.jar

      • commons-io-2.4.jar

    <!-- 文件上传组件 -->
        <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.3.1</version>
        </dependency>
        <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.4</version>
        </dependency>
    <form action="user/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="avatar" />
        <input type="submit" value="上传" />
    </form>
  • Spring MVC方式上传文件

    • 在springmvc.xml配置文件中配置文件解析器,而且bean的id是一个固定值,不能改变

      <!-- 配置文件解析器 -->
      <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
          <!-- 文件上传的相关限制,例如文件的大小10M=10*1024*1024=10485760,这里是以字节为单位 -->
          <property name="maxUploadSize" value="10485760" />
      </bean>
    • 控制器方法的参数名称必须和表单上文件的input标签的name值相同

      - Spring MVC方式上传文件
      
        - 在springmvc.xml配置文件中配置文件解析器,而且bean的id是一个固定值,不能改变
      
          ```xml
          <!-- 配置文件解析器 -->
          <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
              <!-- 文件上传的相关限制,例如文件的大小10M=10*1024*1024=10485760,这里是以字节为单位 -->
              <property name="maxUploadSize" value="10485760" />
          </bean>
          ```
      
        - 控制器方法的参数名称必须和表单上文件的input标签的name值相同
      
          ```java
          import javax.servlet.http.HttpServletRequest;
          import org.springframework.web.multipart.MultipartFile;
          
          @Controller
          @RequestMapping(value="user")
          public class UserController{
              @RequestMapping(value="upload")
              public String upload(HttpServletRequest request, MultipartFile avatar) throws Exception {
                  //使用fileupload组件上传文件
                  //文件保存的地址
                  String path = request.getSession().getServletContext().getRealPath("/uploads/");
                  File file = new File(path);
                  if(!file.exists()){
                      file.mkdirs();
                  }
                  //处理文件上传项
                  // 获取文件上传的名称
                  String filename = avatar.getOriginalFilename();
                  //使用uuid生成唯一的名称作为文件的名称
                  String uuid = UUID.randomUUID().toString().replace("-", "");
                  filename = uuid+"_"+filename;
                  //上传文件
                  avatar.transferTo(new File(path, filename));
                  return "user";
              }
          }
          ```
      
      - 

       


原文链接:https://www.cnblogs.com/aitiknowledge/p/12796535.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java8通过Function获取字段名

下一篇:JAVA设计模式之桥接模式(bridge)