• Spring+SpringMVC+Mybatis(开发必备技能)03、图片上传


    Spring+SpringMVC+Mybatis(开发必备技能)03、图片上传

    目录

    Spring+SpringMVC+Mybatis(开发必备技能)03、图片上传

    1、pom.xml引包

    2、在webapp下创建【imgs】文件夹用作存储图片

    3、控制器编码:

    4、视图层编码:

    5、执行测试:


    1、pom.xml引包

    1. <!-- 文件上传 -->
    2. <dependency>
    3. <groupId>commons-fileupload</groupId>
    4. <artifactId>commons-fileupload</artifactId>
    5. <version>1.3.1</version>
    6. </dependency>
    7. <dependency>
    8. <groupId>commons-io</groupId>
    9. <artifactId>commons-io</artifactId>
    10. <version>2.4</version>
    11. </dependency>

    引完包一定要刷一下。

    在加入spring-mvc.xml文件中加上一下编码: 

    1. <!--配置文件上传解析器-->
    2. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    3. <property name="defaultEncoding" value="UTF-8"/>
    4. <!-- 限制一下文件大小,大概5M -->
    5. <property name="maxUploadSize" value="5000000"/>
    6. </bean>

    2、在webapp下创建【imgs】文件夹用作存储图片

    里面至少放置1张图片或其它,否则tomcat在执行中不会创建【imgs】空文件夹 

    3、控制器编码:

    新建【UploadController.java】文件

    1. package com.item.controller;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.ui.Model;
    4. import org.springframework.web.bind.annotation.CrossOrigin;
    5. import org.springframework.web.bind.annotation.GetMapping;
    6. import org.springframework.web.bind.annotation.PostMapping;
    7. import org.springframework.web.multipart.MultipartFile;
    8. import javax.servlet.http.HttpServletRequest;
    9. import java.io.File;
    10. import java.io.IOException;
    11. import java.util.UUID;
    12. @Controller
    13. @CrossOrigin
    14. public class UploadController {
    15. /**
    16. * 上传页面接口
    17. * @return
    18. */
    19. @GetMapping(value = "/UploadPage")
    20. public String UploadPage(){
    21. return "UploadPage";
    22. }
    23. /**
    24. * 上传接口
    25. * @param img
    26. * @param request
    27. * @param model
    28. * @return
    29. */
    30. @PostMapping(value = "/UploadPageApi")
    31. public String UploadPageApi(
    32. MultipartFile img,
    33. HttpServletRequest request,
    34. Model model){
    35. if(img.getSize()>0){
    36. String realPath = request.getSession().getServletContext().getRealPath("imgs/");
    37. String fileName = UUID.randomUUID()+".jpg";
    38. String path=realPath+fileName;
    39. File file=new File(path);
    40. try {
    41. img.transferTo(file);
    42. } catch (IOException e) {
    43. e.printStackTrace();
    44. }
    45. model.addAttribute("imgSrc",fileName);
    46. return "ShowImg";
    47. }
    48. return "/UploadPage";
    49. }
    50. }

    4、视图层编码:

    【UploadPage.jsp】

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: Administrator
    4. Date: 2022/5/26 0026
    5. Time: 16:27
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <html>
    10. <head>
    11. <title>文件上传页面</title>
    12. </head>
    13. <body>
    14. <form action="/UploadPageApi" method="post" enctype="multipart/form-data">
    15. <p>
    16. <input type="file" name="img"/>
    17. </p>
    18. <p>
    19. <input type="submit" value="上传图片"/>
    20. </p>
    21. </form>
    22. </body>
    23. </html>

    【ShowImg.jsp】

    这里我单独加了个【basePath】用作获取服务器绝对路径。

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: Administrator
    4. Date: 2022/5/26 0026
    5. Time: 15:19
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <%
    10. String path = request.getContextPath();
    11. String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
    12. + path + "/";
    13. %>
    14. <html>
    15. <head>
    16. <title>显示图片</title>
    17. </head>
    18. <body>
    19. <% String imgSrc=(String)request.getAttribute("imgSrc");%>
    20. <img src="<%=basePath%>imgs/<%=imgSrc%>"/>
    21. </body>
    22. </html>

    5、执行测试:

    http://localhost:8088/UploadPage

    选择一张图片:

    上传成功

     如果要存储到数据库里面,直接存储UUID的文件名称即可。

  • 相关阅读:
    Flink 本地任务添加配置参数
    LeetCode 001:两数之和
    [项目管理-19]:在项目管理中, 如何用Jira对项目管理中的所有活动进行结构化、数字化和量化?
    day05DHCP部署与安全以及DNS服务器搭建过程
    SpringCloud搭建微服务之Bus消息总线
    工商银行潍坊分行党建RPA机器人项目解析
    智慧城管系列-0-项目实战-资料
    【直播精彩回顾】Redis企业级数据库及欺诈检测方案!
    软件研发团队适用的项目管理工具推荐
    SQL教育行业案例:学员续费如何分析?(case when、窗口函数)
  • 原文地址:https://blog.csdn.net/feng8403000/article/details/124987272