Spring MVC文件上传

这篇具有很好参考价值的文章主要介绍了Spring MVC文件上传。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring MVC文件上传

Spring MVC 框架的文件上传基于 commons-fileupload 组件,并在该组件上做了进一步的封装,简化了文件上传的代码实现,取消了不同上传组件上的编程差异。

1. MultipartResolver接口

在 Spring MVC 中实现文件上传十分容易,它为文件上传提供了直接支持,即 MultpartiResolver 接口
MultipartResolver 用于处理上传请求,将上传请求包装成可以直接获取文件的数据,从而方便操作

MultpartiResolver 接口有以下两个实现类:

  • StandardServletMultipartResolver: 使用了 Servlet 3.0 标准的上传方式

  • CommonsMultipartResolver: 使用了 Apache 的 commons-fileupload 来完成具体的上传操作

MultpartiResolver 接口具有以下方法

名称 作用
byte[] getBytes() 以字节数组的形式返回文件的内容
String getContentType() 返回文件的内容类型
InputStream getInputStream() 返回一个InputStream,从中读取文件的内容
String getName() 返回请求参数的名称
String getOriginalFillename() 返回客户端提交的原始文件名称
long getSize() 返回文件的大小,单位为字节
boolean isEmpty() 判断被上传文件是否为空
void transferTo(File destination) 将上传文件保存到目标目录下

使用 CommonsMultipartResolver 来完成文件上传,
分为单文件上传多文件上传两部分介绍

2. 文件上传

2.1 maven引入

<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>

2.2 配置 MultipartResolver

使用 CommonsMultipartReslover 配置 MultipartResolver 解析器,在 springmvc.xml 中添加代码如下:multipartResolver

<!-- 配置MultipartResolver,用于上传文件,使用spring的CommonsMultipartResolver -->
<bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="5000000" />
    <property name="defaultEncoding" value="UTF-8" />
</bean>

二选一

    @Bean("multipartResolver") //名称为固定multipartResolver
    public CommonsMultipartResolver  multipartResolver2(){
        CommonsMultipartResolver resolver  = new CommonsMultipartResolver();
        resolver.setDefaultEncoding("UTF-8");
        resolver.setMaxUploadSize(500000);
        return resolver;
    }
  • defaultEncoding: 请求的编码格式,默认为 ISO-8859-1,此处设置为 UTF-8
    (注:defaultEncoding 必须和 JSP 中的 pageEncoding 一致,以便正确读取表单的内容)
  • maxUploadSize: 上传文件大小上限,单位为字节

2.3 编写文件上传表单页面

负责文件上传表单的编码类型必须是“multipart/form-data”类型。

2.4 上传页面

   <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
   <form action="/upload" method="post" enctype="multipart/form-data">
       <input type="file" name="file01"><br/>
       <input type="submit" value="上传">
   </form>
</body>
</html>

2.5 编写控制器

测试:

@Controller
public class UploadController {
    @GetMapping("/upload")
    public String  get(){
        return "upload";
    }
    @PostMapping("/upload")
    @ResponseBody
    public String upload(MultipartFile file01, HttpServletRequest req) throws IOException {
        //String Path = req.getRealPath(".");
        //找到文件存储的位置
        String path = req.getSession().getServletContext().getRealPath(".");
  
        return "ok";
    }
}

debug测试: 测试运行试一下:

存储文件:controller中编写

@PostMapping("/upload")
    @ResponseBody
    public String upload(MultipartFile file01, HttpServletRequest req) throws IOException {
        //String Path = req.getRealPath(".");
        //找到文件存储的位置
        String path = req.getSession().getServletContext().getRealPath(".");
        //获取文件名字
        String name=file01.getOriginalFilename();
        //transferTo方法将上传文件写到服务器上指定的文件;
        file01.transferTo(new File(path,name));
        return "ok";
    }

也可以把路径写死:

 file01.transferTo(new File("D:\\206",name));

Spring MVC文件上传,springmvc,spring,mvc,java

加入图片uuid随机生成名字:

 String name= IdUtil.fastSimpleUUID()+"-"+file01.getOriginalFilename();

加入判断防止用户恶意测试:

if(file01.isEmpty()){
            return "请选择文件";
        }

代码修改:

@PostMapping("/upload")
    @ResponseBody
    public String upload(MultipartFile file01, HttpServletRequest req) throws IOException {
      if(file.isEmpty()){
            return  "请选择文件";
        }
         //String Path = req.getRealPath(".");
        //找到文件存储的位置
        String path = req.getSession().getServletContext().getRealPath(".");
        //获取文件名字
        String name = IdUtil.fastSimpleUUID()+"_"+ file.getOriginalFilename();
        //transferTo方法将上传文件写到服务器上指定的文件;
        file01.transferTo(new File(path,name));
        return "ok";
    }

配置类中配置:文章来源地址https://www.toymoban.com/news/detail-555866.html

@Bean
    public CommonsMultipartResolver multipartResolver(){
        CommonsMultipartResolver resolver=new CommonsMultipartResolver();
        resolver.setDefaultEncoding("UTF-8");
        resolver.setMaxUploadSize(5000000);
        return resolver;
    }

到了这里,关于Spring MVC文件上传的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring MVC:文件的上传与下载

    文件的上传与下载是项目开发中最常用的功能之一。在 JavaWeb 中,文件上传与下载的实现是比较繁琐的。而 Spring MVC 实现文件上传与下载是相对比较简单的。 简单示例: 首先,在 pom.xml 中配置以下依赖

    2024年02月08日
    浏览(28)
  • Spring Mvc 文件上传(MultipartFile )—官方原版

    要启动Spring Boot MVC应用程序,首先需要一个启动器。在这个示例中,已经添加了spring-boot-starter thymelaf和spring-boot-starter web作为依赖项。要使用Servlet容器上传文件,您需要注册一个MultipartConfigElement类(在web.xml中为<multipart-config>)。多亏了Spring Boot,一切都可以自动配置!

    2024年02月14日
    浏览(32)
  • Spring MVC多种情况下的文件上传

    上传是Web工程中很常见的功能,SpringMVC框架简化了文件上传的代码,我们首先使用JAVAEE原生方式上传文件来进行详细描述: 这里我们创建新的SpringMVC模块,在web.xml中将项目从2.3改为3.1,即可默认开启el表达式,如下图: 那这里我们需要访问一个页面来进行文件下载 upload.js

    2024年02月13日
    浏览(64)
  • Spring MVC文件上传及全局异常处理器

    编写controller 在index.jsp里面定义超链接 如果不加以异常处理,错误信息肯定会抛在浏览器页面上,这样很不友好,所以必须进行异常处理。 系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图: 编写c

    2024年01月18日
    浏览(41)
  • Spring MVC异步上传、跨服务器上传和文件下载

    之前的上传方案,在上传成功后都会跳转页面。而在实际开发中,很多情况下上传后不进行跳转,而是进行页面的局部刷新,比如:上传头像成功后将头像显示在网页中。这时候就需要使用异步文件上传。 编写JSP页面,引入jQuery和jQuery表单上传工具jquery.form.js【该js文件已经

    2024年02月16日
    浏览(35)
  • 【Java 中级】一文精通 Spring MVC - 上传(十)

    👉 博主介绍 : 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区:个人社区 💞 个人主页:个人主页 🙉 专栏地址: ✅ Java 高阶 🙉八股文专题:剑指大厂,手撕

    2024年02月11日
    浏览(33)
  • Spring Mvc:初识SpringMvc

    编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6 SpringMvc版本:5.3.1 ①SpringMVC是Spring的一种 子框架 ,它是Spring为【 展现层 | 表示层 | 表述层 | 控制层 】提供的 基于MVC设计理念 的优秀的Web框架,是目前最主流的MVC框架。

    2024年02月13日
    浏览(44)
  • Spring MVC 之MVC 体系结构、什么是SpringMVC

    三层架构 我们的开发架构⼀般都是基于两种形式,⼀种是 C/S 架构,也就是客户端/服务器;另⼀种是 B/S 架构,也就是浏览器服务器。在 JavaEE 开发中,⼏乎全都是基于 B/S 架构的开发。那么在 B/S 架构中,系统标准的三层架构包括:表现层、业务层、持久层。 三层架构中,每

    2024年02月09日
    浏览(36)
  • 【SpringMVC】Spring Web MVC入门(一)

    前面我们了解了什么是Spring,那么今天我将为大家分享一种在日常网站开发中使用非常广泛的框架——Spring Web MVC。 先来看看官方解释。 Spring Web MVC是Spring Framework提供的Web组件,它是一个MVC设计模式的框架,主要用于开发灵活、松散耦合的Web应用程序。它提供了模型-视图-控

    2024年02月05日
    浏览(34)
  • (第十一天)初识SpringMVC SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录

    今天我们要来学习一下SSM框架的最后一个框架SpringMVC 一、初认SpringMVC 基本概念: ​ Spring MVC(Model-View-Controller)是一个用于构建Java Web应用程序的开源框架,它提供了一种基于MVC架构的方式来开发Web应用 。 ​ SpringMVC是Spring Framework的一部分,它是一种基于模型-视图-控制器(

    2024年02月07日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包