springmvc上传文件方法详解

KLQ 2020-07-22 09:46:14 java常见问答 3323

你知道springmvc实现文件上传要怎样做吗?下面的文章内容要给大家介绍的就是和这个方面相关的内容,一起来了解一下。

文件的上传和下载基本上的话都是web项目当中会使用得到的技术,在web学习当中用到的是Apache fileupload这个组件来实现上传,在springmvc当中,对它进行了封装,这使得使用变得更加的方便,可是,底层是由Apache fileupload来实现的,springmvc当中,由MultipartFile接口来实现文件上传。

MultipartFile接口用来实现springmvc当中的文件上传的操作。

有两个实现类:

两个实现类

接口定义方法:

接口定义方法

实现文件上传

导入jar包,commons-fileupload;commons-io;

commons-io能够不用自己导入,maven会自动导入对应版本的jar;

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.2</version>
</dependency>

前端jsp页面

input的type设置成file;form表单的method设置成post;form表单的enctype设置成multipart/form-data(以二进制的形式传输数据);

<%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    
    <head>
        <meta charset="ISO-8859-1">
        <title>Insert title here</title>
    </head>
    
    <body>
        <form action="/ssm/file/imgUpload" enctype="multipart/form-data" method="post">
            <input type="file" name="file"><br><br>
            <input type="submit" value="上传">
        </form>
    </body>
    
</html>

Controller层接收

使用MultipartFile对象作为参数,接收前端发送过来的文件,将文件写入本地文件中,上传操作完成;

@RequestMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file, HttpServletRequest req)
throws IllegalStateException, IOException
{
    // 判断文件是否为空,空则返回失败页面
    if (file.isEmpty())
    {
        return "failed";
    }
    // 获取文件存储路径(绝对路径)
    String path = req.getServletContext()
        .getRealPath("/WEB-INF/file");
    // 获取原文件名
    String fileName = file.getOriginalFilename();
    // 创建文件实例
    File filePath = new File(path, fileName);
    // 如果文件目录不存在,创建目录
    if (!filePath.getParentFile()
        .exists())
    {
        filePath.getParentFile()
            .mkdirs();
        System.out.println("创建目录" + filePath);
    }
    // 写入文件
    file.transferTo(filePath);
    return "success";
}

springmvc.xml配置CommonsMultipartResolver

<bean id="multipartResolver"
	class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--上传文件的最大大小,单位为字节 -->
    <property name="maxUploadSize" value="17367648787"></property>
    <!-- 上传文件的编码 -->
    <property name="defaultEncoding" value="UTF-8"></property>
</bean>

springmvc上传文件的实现你都清楚了吗?springmvc也是经常会接触到的,假如你还想了解更多springmvc以及java基础知识,欢迎继续通过奇Q工具网来了解。

推荐阅读:

springmvc的工作流程是怎样的?流程详解

springboot和springmvc区别有哪些?区别详细介绍

Spring和SpringMVC的区别是什么?各自的优缺点是什么?