• (九)


    一. 导入相关 jar 包(若之前导入过 servlet-api 需排除)

            <!--文件上传jar包, 前面已导过servlet-api需排除-->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.3</version>
                <exclusions>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>servlet-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>

    二. 创建 upload.jsp

    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <form action="${pageContext.request.contextPath}/upload/test1" method="post" enctype="multipart/form-data">
            file: <input type="file" name="source"><br>
            <input type="submit" value="上传">
        </form>
    </body>
    </html>

    三. 创建 UploadController.java

    @Controller
    @RequestMapping("/upload")
    public class UploadController {
    
        @RequestMapping("/test1")
        //MultipartFile的值需与前端中file标签的name值相同, 以此获取前端上传的数据
        public String test1(MultipartFile source, HttpSession session) throws IOException {
            System.out.println("test1");
    
            //获取上传文件的 原始名称
            String fileName = source.getOriginalFilename();
            //获取上传文件的 类型
            String contentType = source.getContentType();
    
            //生成一个唯一的文件名, 防止提交的文件重名
            String uniqueFileName = UUID.randomUUID().toString();
            //获取文件后缀名
            String ext = FilenameUtils.getExtension(fileName);
            //拼接成完整的唯一文件名, 用于接收文件
            String uniqueFileName2 = uniqueFileName + "." + ext;
            System.out.println(uniqueFileName2);
    
            System.out.println(fileName);
            System.out.println(contentType);
            //返回该项目中参数目录的绝对路径
            String realPath = session.getServletContext().getRealPath("/upload");
            System.out.println("/upload目录的绝对路径: " + realPath);
    
            //保存文件
            source.transferTo(new File(realPath + "\" + uniqueFileName2));
            return "hello";
        }
    }

    四. 在 mvc.xml 中注册上传解析器(id固定为 multipartResolver)

        ...
        <!--上传解析器, id为multipartResolver-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
    
    </beans>

    五. 访问操作及验证

     

     

     文件会保存到 target 的 upload 目录下, 为了让 upload 目录在项目部署时能正常部署过去, 不能让其为空, 比如在其中创建一个文件, 

     

     

     

     console 打印:

  • 相关阅读:
    8.20 附加赛3
    8.22 附加赛4
    Codeforces Round #505 (Div 1 + Div 2) (A~D)
    8.9 附加赛2
    8.10 正睿暑期集训营 Day7
    8.9 正睿暑期集训营 Day6
    8.8 正睿暑期集训营 Day5
    8.7 正睿暑期集训营 Day4
    8.6 正睿暑期集训营 Day3
    8.5 正睿暑期集训营 Day2
  • 原文地址:https://www.cnblogs.com/Ryan368/p/14207508.html
Copyright © 2020-2023  润新知