zoukankan      html  css  js  c++  java
  • 【Spring学习笔记-MVC-13】Spring MVC之文件上传

    作者:ssslinppp      

    1. 摘要


    Spring MVC为文件上传提供了最直接的支持,这种支持是通过即插即用的MultipartResolve实现的。Spring使用Jakarta Commons FileUpload技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。
    下面将具体讲解Spring MVC实现文件上传的具体步骤。

    2. 添加Jar包


    Spring MVC文件上传,需要添加如下两个jar包:
    1. commons-fileupload-1.2.2.jar;
    2. commons-io-2.0.1.jar

    3. 配置CommonsMultipartResolver



    1. <!-- 文件上传 -->
    2. <bean id="multipartResolver"
    3. class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
    4. p:defaultEncoding="UTF-8" p:maxUploadSize="5000000" p:uploadTempDir="upload/temp" />

    说明:
    • p:defaultEncoding="UTF-8":这里设置默认的文件编码为UTF-8,必须与用户JSP的默认编码一致;
    • p:maxUploadSize="5000000":指定文件上传大小,单位为字节;
    • p:uploadTempDir="upload/temp":文件上传临时目录,上传完成后,就会将临时文件删除;

    4. 控制层代码


    前台请求:http://localhost:8080/SpringMVCTest/test/uploadPage.action 时,返回uploadPage.jsp界面,如下:



    1. @RequestMapping(value = "/upload")
    2. public String updateThumb(@RequestParam("name") String name,
    3. @RequestParam("file") MultipartFile file,
    4. HttpServletRequest request, ModelMap model) throws Exception {
    5. if (!file.isEmpty()) {
    6. // 保存文件-方式1 --测试过,可以用,必须先创建相应目录
    7. // file.transferTo(new File("d:/"+file.getOriginalFilename()));
    8. // 保存文件-方式2
    9. String path = request.getSession().getServletContext()
    10. .getRealPath("upload");
    11. String fileName = file.getOriginalFilename();
    12. File targetFile = new File(path, fileName);
    13. //目录不存在,则创建目录
    14. if(!targetFile.exists()){
    15. targetFile.mkdirs();
    16. }
    17. //保存
    18. try {
    19. file.transferTo(targetFile);
    20. } catch (Exception e) {
    21. e.printStackTrace();
    22. }
    23. model.addAttribute("fileUrl", request.getContextPath()+"/upload/"+fileName);
    24. return "success";
    25. } else {
    26. return "fail";
    27. }
    28. }


    5. 文件上传JSP



    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    4. <html>
    5. <head>
    6. <title>请上传用户头像</title>
    7. </head>
    8. <body>
    9. <h1>请选择上传的头像文件</h1>
    10. <form method="post" action="<c:url value="/test/upload.action"/>"
    11. enctype="multipart/form-data">
    12. <input type="text" name="name" />
    13. <input type="file" name="file" />
    14. <input type="submit" />
    15. </form>
    16. </body>
    17. </html>

    成功返回的界面:









    附件列表

    • 相关阅读:
      最小二乘法(转载)
      负反馈放大器电路(转载)
      串联谐振与并联谐振的区别_串联谐振与并联谐振产生谐振的条件(转载)
      运算放大器:虚短与虚断(转载)
      人物根据镜头方向旋转和移动
      浅析勒贝格积分的思想在数论函数求和中的应用
      一类巧妙利用利用分治的序列求值
      YAOI Round #1 (Div.2) 题解
      NOIP 2020 游记
      P4550 收集邮票 与 灵异的期望
    • 原文地址:https://www.cnblogs.com/ssslinppp/p/4607043.html
    Copyright © 2011-2022 走看看