SpringMVC文件上传

news2024/10/7 10:19:07

文章目录

  • 文件上传配置
  • 案例


文件上传配置

提示:这里可以添加本文要记录的大概内容:

在MvcConfig配置中:

    /**
     * 配置文件上传解析器
     */
    @Bean
    public CommonsMultipartResolver multipartResolver() {
        CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
        // 设置上传单个文件的大小限制,单位:字节     倒序:KB*MB*10,这里是10MB
        commonsMultipartResolver.setMaxUploadSizePerFile(10 * 1024 * 1024);
        // 设置上传文件的总大小,单位:字节    这里是100MB
        commonsMultipartResolver.setMaxUploadSize(100 * 1024 * 1024);
        return commonsMultipartResolver;
    }

提示:以下是本篇文章正文内容,下面案例可供参考

案例

首先在电脑上新建一个文件夹(自定义upload),无论C盘还是D盘,最好不要受管理员权限影响
在这里插入图片描述
此时文件夹是空的,接下来复制该文件夹路径
在这里插入图片描述
接下来在Controller 包中新建一个类

@Controller
public class UploadController {
	
	@RequestMapping("/upload")
	@ResponseBody
	public String upload(MultipartFile uploadFile) {
		
		// 上传文件的路径,或者  / 一个反斜线
		String path = "C:\\upload";
		// 获取上传文件的原始名字(带有后缀)
		String fileName = uploadFile.getOriginalFilename();
		// 使用UUID生成一个唯一不重复的文件名,原始文件的后缀不能变	
		fileName = UUID.randomUUID() + fileName.substring(fileName.lastIndexOf('.'));
		// 创建上传后文件对象
		File file = new File(path,fileName);
		// 传输上传  文件
		try {
			uploadFile.transferTo(file);
		} catch (Exception e) {
			// try catch 块  留一个,异常变成Exception
			e.printStackTrace();
		} 
		
		return "上传成功";
	}
}

代码解释:
当点击上传按钮时,浏览器会向后台发送一个 POST 请求。该请求将包含一些文件数据和其他表单值。Spring MVC提供了一种很方便的方式来处理这些类型的表单数据。这就是MultipartFile类。

在该控制器中的方法定义中,@RequestMapping("/upload")注解表示该方法将处理/ upload URL模式的所有请求。@ResponseBody注解将该方法的返回值转换为HTTP响应正文。

首先,定义了一个存储上传文件的路径,可以根据实际需求自己定义。紧接着,通过uploadFile.getOriginalFilename()方法获取上传文件的原始文件名。为了避免上传同名文件产生问题,这里使用UUID生成一个唯一不重复的文件名,并将其与上传文件的扩展名拼接起来。最后,创建一个File对象,用于存储上传文件到指定路径下。

最后,使用uploadFile.transferTo(file)方法将上传的文件保存到指定路径,如果遇到任何异常,就会在控制台上打印出错误信息,并通过return语句返回一个字符串,表示上传成功。

可以根据实际需求,修改上传路径、文件名等参数,以便将上传的文件保存到指定的位置。

测试:
请添加图片描述
这时候打开上面新建的文件夹会发现里面多了个文件
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/851399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA设置项目编码格式【修改为GBK 或 UTF-8】

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 出现问题 IDEA导入Eclipse项目、出现编码格式问题。以下过程为将编码格…

尚硅谷张天禹Vue2+Vue3笔记(待续)

简介 什么是Vue? 一套用于构建用户界面的渐进式JavaScript框架。将数据转变成用户可看到的界面。 什么是渐进式? Vue可以自底向上逐层的应用 简单应用:只需一个轻量小巧的核心库 复杂应用:可以引入各式各样的Vue插件 Vue的特点是什么? 1.采…

TCP/IP四层模型对比OSI七层网络模型的区别是啥?数据传输过程原来是这样的

一、TCP/IP四层模型对比OSI七层模型 它们两个定义的一些功能和协议都是差不多的。TCP/IP四层协议模型比我们的七层少了三层,把我们的数据链路层和物理层放在一层里面了,叫做数据链路层(网络接口层),对应网络协议也没有…

在 Android 上使用机器学习套件检测人脸

须知事项 此 API 需要 Android API 级别 19 或更高级别。确保应用的 build 文件使用的 minSdkVersion 值不小于 19。 请务必在您的项目级 build.gradle 文件中的 buildscript 和 allprojects 部分添加 Google 的 Maven 代码库。 将 Android 版机器学习套件库的依赖项添加到模…

SpringMVC的架构有什么优势?——控制器(三)

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

Python练习 linux系统资源监控

yum install python3 yum -y install python3-pip yum -y install epel-release yum -y install gcc python-devel pip install --trusted-host pypi.tuna.tsinghua.edu.cn psutil 初版: import os import sys import time import platform import subprocess …

Lombok 中 @EqualsAndHashCode注解的使用

Lombok 中 EqualsAndHashCode注解的使用 EqualsAndHashCode注解的作用 EqualsAndHashCode注解的作用就是自动实现model类的equals方法和hashcode方法。我们在实际工作中经常会使用lombok来简化我们的开发,例如我们可以在定义的model类上添加Data注解,从…

Go 异步任务

Go 异步任务 异步任务在开发中很常见,用来做解耦。本文介绍一下异步队列的实现的几个问题,并且结合三方库实现来分析。 有下面的几个关键点: 用户代码(任务)如何封装数据的存放(数据存放在哪里?就是一个…

Java——基础语法(二)

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

【SpringBoot】| ORM 操作 MySQL(集成MyBatis)

目录 一:ORM 操作 MySQL 1. 创建 Spring Boot 项目 2. MapperScan 3. mapper文件和java代码分开管理 4. 事务支持 一:ORM 操作 MySQL 使用MyBatis框架操作数据, 在SpringBoot框架集成MyBatis,使用步骤: &#x…

恒压恒流模式的工作原理及直流电源的应用

直流电源的两种基本工作模式为恒压、恒流,恒压输出时,电压恒定,随着负载发生变动,电流随之改变,当电流到达设定的阈值时,切换到恒流模式,维持目标电流为恒定值。 下面给出直流电源的伏安特性曲…

【数据结构与算法】十大经典排序算法-快速排序

🌟个人博客:www.hellocode.top 🏰Java知识导航:Java-Navigate 🔥CSDN:HelloCode. 🌞知乎:HelloCode 🌴掘金:HelloCode ⚡如有问题,欢迎指正&#…

Spring中的循环依赖问题

文章目录 前言一、什么是循环依赖?二、三级缓存三、图解三级缓存总结 前言 本文章将讲解Spring循环依赖的问题 一、什么是循环依赖? 一个或多个对象之间存在直接或间接的依赖关系,这种依赖关系构成一个环形调用,有下面 3 种方式…

根据数组中各值是否满足指定条件决定是否将其按指定规则计算更新numpy.putmask()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 根据数组中各值是否满足指定条件 决定是否将其按指定规则计算更新 numpy.putmask() 选择题 以下程序的运行结果是? import numpy as np xnp.array([1,2,3,4,5]) print("【显示】x:\n&quo…

【Spring】如果你需要使用重试机制,请使用Spring官方的Spring Retry

文章目录 前言Spring Retry的基本使用第一步,引入Spring Retry的jar包第二步,构建一个RetryTemplate类第三步,使用RETRY_TEMPLATE注意事项 拓展方法降级操作重试策略:时间策略重试策略:指定异常策略 前言 Spring Retr…

Vue3 第五节 一些组合式API和其他改变

1.provide和inject 2.响应式数据判断 3.Composition API的优势 4.新的组件 5.其他改变 一.provide和inject 作用:实现祖与后代组件间通信 套路:父组件有一个provide选项来提供数据,后代组件有一个inject选项来开始使用这些数据 &…

centos 7镜像(iso)下载图文教程(超详细)

声明:本教程为本人学习笔记,仅供参考 文章目录 前言一、阿里云镜像站下载centos 7 二、清华源下载centos 7小结 前言 声明:本教程为本人学习笔记,仅供参考 本教程将提供两种方式下载centos 7 系统镜像 1、阿里巴巴开源镜像站 2、…

Unity之ShaderGraph 节点介绍 Procedural节点

程序化 噪声Gradient Noise(渐变或柏林噪声)Simple Noise(简单噪声)Voronoi(Voronoi 噪声) 形状Ellipse(椭圆形)Polygon(正多边形)Rectangle(矩形…

VM虚拟机和主机互相ping不通,但是ssh能连上,也能访问外网

直接还原默认设置,然后点确定 注意,你还原设置以后ip也会变,ifconfig自己重新看一下

大数据-玩转数据-Sink到Kafka

一、添加Kafka Connector依赖 pom.xml 中添加 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-kafka_${scala.binary.version}</artifactId><version>${kafka.version}</version></dependency&g…