您的位置 首页 java

Spring MVC实现文件上传

Spring MVC实现文件上传

数据表

employee

 CREATE TABLE `employee` (
  `e_id` int(11) NOT NULL AUTO_INCREMENT,
  `e_name` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '员工姓名',
  `e_sex` int(11) DEFAULT NULL COMMENT '员工性别:0:男 1:女',
  `e_head_pic` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '员工头像',
  `e_join_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入职日期',
  PRIMARY KEY (`e_id`)
)   

效果图

项目结构

Java源码结构

配置文件结构

前端结构

环境搭建

使用Maven创建Web项目

​IDEA创建JavaWeb项目并配置Tomcat​​

整合SSM框架

​ ​整合SSM​​

配置Tomcat虚拟访问路径

​ ​配置Tomcat虚拟访问路径​​

pom.xml文件

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="#34;
         xmlns:xsi="#34;
         xsi:schemaLocation=" #34;>
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>SSMFileUpload</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!--  -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>5.2.4.RELEASE</version>
        </dependency>

        <!--  -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.4</version>
        </dependency>

        <!--  -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.4.RELEASE</version>
        </dependency>

        <!-- mybatis依赖的坐标 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.4</version>
        </dependency>

        <!-- java连接mysql的驱动坐标 -->
        <!--  -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

        <!--  -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>

        <!--  -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.4.RELEASE</version>
        </dependency>

        <!--  -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.4</version>
        </dependency>

        <!--  -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

        <!--  -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

</project>  

Spring MVC文件上传配置

打开springmvc.xml配置文件,添加如下内容

 <!-- 配置文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 设置文件上传大小,单位是字节 -->
    <property name="maxUploadSize" value="5000000"></property>
    <property name="defaultEncoding" value="UTF-8" />
    <property name="resolveLazily" value="true" />
</bean>  

核心源码

EmployeeController

 package com.wanshi.controller;

import com.wanshi.bean.Employee;
import com.wanshi.service.EmployeeService;
import com.wanshi.util.FileUtil;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;

@Controller
@RequestMapping("/emp")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    @RequestMapping("/add")
    public String add() {
        return "add";
    }

    @SneakyThrows
    @RequestMapping("/addHandle")
    public String add(MultipartFile head_pic, HttpServletRequest request)  {
        try {
            String eName = request.getParameter("e_name");
            String eSex = request.getParameter("e_sex");
            String joinDate = request.getParameter("e_join_date");
            String headPic = FileUtil.upload(head_pic, "");
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

            Employee employee = new Employee();
            employee.setE_name(eName);
            employee.setE_sex(Integer.valueOf(eSex));
            employee.setE_join_date(sdf.parse(joinDate));
            employee.setE_head_pic(headPic);

            employeeService.insert(employee);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "redirect:/emp/list";
    }

    @RequestMapping("/list")
    public String list(Model model){
        List<Employee> empList = employeeService.list();
        model.addAttribute("empList", empList);
        return "list";
    }
}  

FileUtil

 package com.wanshi.util;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

public class FileUtil {

    public static String upload(MultipartFile head_pic, String oldHeadPic) throws IOException {
        String finalFileName = "";
        if (head_pic.getSize() > 0) {
            InputStream inputStream = head_pic.getInputStream();
            String originalFilename = head_pic.getOriginalFilename();
            new File("C:/uploads/img/"+oldHeadPic).delete();
            //生成目标文件
            String destName = UUID.randomUUID().toString().replace("-", "");
            //获取源文件的后缀名
            String extName = originalFilename.substring(originalFilename.lastIndexOf("."));
            finalFileName = destName+extName;
            //目标文件
            File file = new File("C:/uploads/img/"+finalFileName);
            if (!file.exists()) {
                file.mkdirs();
            }
            //开始上传
            head_pic.transferTo(file);
        }
        return finalFileName;
    }

}  

结语

项目演示就到此结束了,感兴趣的读者可在下方获取源码,文件上传是非常常用的技术,一定要搞懂,不明白的可以多敲 上几遍,熟能生巧,相信你持续的努力,终有一日你就会实现你的梦想,编程路上,我们都是追梦人~如果你觉得本文写的不错的话,那就给博主点个赞吧~~

来源:

“做程序员,圈子和学习最重要”因为有有了圈子可以让你少走弯路,扩宽人脉,扩展思路,学习他人的一些经验及学习方法!同时在这分享一下是一直以来整理的Java后端进阶笔记文档和学习资料免费分享给大家!需要资料的朋友私信我扣【06】

文章来源:智云一二三科技

文章标题:Spring MVC实现文件上传

文章地址:https://www.zhihuclub.com/174678.shtml

关于作者: 智云科技

热门文章

网站地图