springmvc 文件上传 及配置虚拟目录

91 阅读1分钟

SpringMVC多文件上传实现

1、加载pom依赖

<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>

2、配置bean,此处id="multipartResolver"一定要正确。

<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver">
    <property name="defaultEncoding" value="UTF-8"></property>
    <property name="maxUploadSize" value="#{1024*1024*100}"></property>
</bean>

3、配置控制器

  @RequestMapping("upload")
    public String upload01(String desc, MultipartFile file01, HttpServletRequest req, Model model) throws IOException {
        System.out.println(desc);
        System.out.println(file01.getOriginalFilename());
        String fileName = "D:\up\"+file01.getOriginalFilename();
        System.out.println(fileName);
        File file = new File(fileName);
        file01.transferTo(file);

        model.addAttribute("filename",file01.getOriginalFilename());
//
        return "success";
    }


    /***
     * 多文件上传
     * **/
    @RequestMapping("uploads")
    public String upload01(String desc,MultipartFile[] file01,HttpServletRequest req) throws InterruptedException {
        for(MultipartFile f:file01){

            System.out.println(desc);
            System.out.println(f.getOriginalFilename());
            String fileName = "D:\up\" + f.getOriginalFilename();
            System.out.println(fileName);
            File file = new File(fileName);
            try {
                f.transferTo(file);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }





    //
        }
        return "success";
    }


    /*
    * 多线上传
    * */
    @RequestMapping("uploads01")
    public String uploads01(String desc,MultipartFile[] file01,HttpServletRequest req) throws InterruptedException {
        for(MultipartFile f:file01){
            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println(desc);
                    System.out.println(f.getOriginalFilename());
                    String fileName = "D:\up\" + f.getOriginalFilename();
                    System.out.println(fileName);
                    File file = new File(fileName);
                    try {
                        f.transferTo(file);
                    } catch (IOException e) {
                        throw new RuntimeException(e);
                    }
                }
            });

            thread.start(); //启动线程
            thread.join(); //让子线程执行完再执行主线程


            //
        }
        return "success";
    }

4、前端模板JSP

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2023/2/12
  Time: 1:51
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
    <form method="post" action="${pageContext.request.contextPath}/upload" enctype="multipart/form-data" >
        <input type="text" name="desc">
        <input type="file" name="file01" >
      <input type="submit" value="提交">

    </form>

    <hr>
    多文件上传
    <form method="post" action="${pageContext.request.contextPath}/uploads" enctype="multipart/form-data" >
        <input type="text" name="desc">
        <input type="file" name="file01" multiple accept="image/*">
        <input type="submit" value="提交">

    </form>

    多文件上传 接收多线程
    <form method="post" action="${pageContext.request.contextPath}/uploads01" enctype="multipart/form-data" >
        <input type="text" name="desc">
        <input type="file" name="file01" multiple accept="image/*">
        <input type="submit" value="提交">

    </form>
    hao:
    <img src="${pageContext.request.contextPath}/up/QQ截图20230204033515.png">
  </body>
</html>

Intellj 环境下设置虚拟路径

1、添加虚拟文件 image.png

此处为运行根目录下面虚拟目录 如 /springmvc/up

2、勾选 部署已配置的……在Tomcat中 image.png

3、使用

<img src="${pageContext.request.contextPath}/up/QQ截图20230204033515.png">