• SpringMVC文件上传


    1、导入依赖

    1.  
    2.  <dependency>
    3.      <groupId>commons-iogroupId>
    4.      <artifactId>commons-ioartifactId>
    5.      <version>2.4version>
    6.  dependency>
    7.  <dependency>
    8.      <groupId>commons-fileuploadgroupId>
    9.      <artifactId>commons-fileuploadartifactId>
    10.      <version>1.4version>
    11.      <exclusions>
    12.          <exclusion>
    13.              <artifactId>commons-ioartifactId>
    14.              <groupId>commons-iogroupId>
    15.          exclusion>
    16.      exclusions>
    17.  dependency>
    18.  <dependency>
    19.      <groupId>commons-codecgroupId>
    20.      <artifactId>commons-codecartifactId>
    21.      <version>1.13version>
    22.  dependency>

    2、在spirngmvc.xml文件中配置

    1.  
    2.  <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    3.      
    4.      <property name="defaultEncoding" value="utf-8"/>
    5.      
    6.      <property name="maxUploadSize" value="10485760000"/>
    7.      
    8.      <property name="maxInMemorySize" value="40960"/>
    9.  bean>

    3、前端

    注意:文件上传的form表单必须加上enctype="multipart/form-data"

    1.  <form action="${request.contextPath}/brand/add" method="post" enctype="multipart/form-data">
    2.     Logo:<input type="file" name="logo">
    3.      <input type="submit" value="提交">
    4.  form>

    4、后端

    注意:上传文件的Controller类必须加上@MultipartConfig注解,并且文件上传的接口必须时Post请求。

    1.  import org.springframework.stereotype.Controller;
    2.  import org.springframework.web.bind.annotation.PostMapping;
    3.  import org.springframework.web.bind.annotation.RequestMapping;
    4.  import org.springframework.web.bind.annotation.RequestParam;
    5.  import org.springframework.web.multipart.MultipartFile;
    6.  ​
    7.  import javax.servlet.annotation.MultipartConfig;
    8.  import java.io.File;
    9.  import java.io.IOException;
    10.  ​
    11.  /**
    12.   * @author JngKang
    13.   * @date 2022-05-16 09:27
    14.   */
    15.  @Controller
    16.  @MultipartConfig
    17.  @RequestMapping("brand")
    18.  public class BrandController {
    19.      @PostMapping("add")
    20.      public void add(@RequestParam("logo") MultipartFile multipartFile) {
    21.          try {
    22.              multipartFile.transferTo(new File("d:/a.jpg"));
    23.         } catch (IOException e) {
    24.              throw new RuntimeException(e);
    25.         }
    26.     }
    27.  }

    后端优化

    1.  import com.xxx.constant.WegoConst;
    2.  import org.springframework.stereotype.Controller;
    3.  import org.springframework.web.bind.annotation.PostMapping;
    4.  import org.springframework.web.bind.annotation.RequestMapping;
    5.  import org.springframework.web.bind.annotation.RequestParam;
    6.  import org.springframework.web.multipart.MultipartFile;
    7.  ​
    8.  import javax.servlet.annotation.MultipartConfig;
    9.  import java.io.File;
    10.  import java.io.IOException;
    11.  import java.util.UUID;
    12.  ​
    13.  /**
    14.   * @author JngKang
    15.   * @date 2022-05-16 09:27
    16.   */
    17.  @Controller
    18.  @MultipartConfig
    19.  @RequestMapping("brand")
    20.  public class BrandController {
    21.      @PostMapping("add")
    22.      public void add(@RequestParam("logo") MultipartFile multipartFile) {
    23.          String fileName = multipartFile.getOriginalFilename();
    24.          String suffix = fileName.substring(fileName.lastIndexOf("."));
    25.          String filePath = WegoConst.FILEPATH + UUID.randomUUID() + suffix;
    26.          try {
    27.              multipartFile.transferTo(new File(filePath));
    28.         } catch (IOException e) {
    29.              throw new RuntimeException(e);
    30.         }
    31.     }
    32.  }

  • 相关阅读:
    卷积神经网络结构设计,卷积神经网络参数设置
    [leecode每日一题]面试题 01.09. 字符串轮转
    [Acwing] 58周赛 4490. 染色
    kubernetes集群之Pod说能不能让我体面的消亡呀?
    QGIS编译(跨平台编译)之四十九:QGIS在Linux环境下编译的错误处理
    【DCMTK】DcmItem::putAndInsertOFStringArray失败
    【Shell牛客刷题系列】SHELL21 格式化输出:来看个printf命令的小彩蛋~
    分布式系统的 38 个知识点
    linux 后台运行注意
    Navicat Premium 16.X--不错的数据库工具
  • 原文地址:https://blog.csdn.net/JngKang/article/details/127611572