当前位置: 首页 > news >正文

SpringMVC实现文件上传

 导入文件上传相关依赖

<!--文件上传-->
<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>

编写前端jsp页面 和文件 上传的表单

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>文件上传</title>
</head>
<body>
​
<h3>文件上传</h3>
​
<%--enctype="multipart/form-data" 声明该表单是做文件上传的表单--%>
<form action="/fileupload.do" method="post" enctype="multipart/form-data">选择文件:<input type="file" name="upload" /><br/><input type="submit" value="上传" />
</form>
​
</body>
</html>

配置文件 利用SpringMVC进行文件上传,并指定文件上传大小

<!--配置文件上传的解析器组件。id的名称是固定,不能乱写-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!--设置上传文件的总大小 8M = 8 * 1024 * 1024 --><property name="maxUploadSize" value="8388608" />
</bean><!--让映射器、适配器和处理器生效(默认不配置也是可以的)-->
<mvc:annotation-driven/>

编写逻辑代码:

@Controller
//文件上传
public class UploadController {/*** 文件上传** MultipartFile upload 文件上传解析器对象,解析request后,文件上传对象** @return*/@RequestMapping("/fileupload.do")public String upload(MultipartFile upload, HttpServletRequest request) throws IOException {// 把文件上传到哪个位置,realPath获取本次会话路径下面的"/uploads"文件夹下String realPath = request.getSession().getServletContext().getRealPath("/uploads");// 在绝对路径下  创建该文件夹File file = new File(realPath);// 判断该文件夹是否存在if(!file.exists()){// 创建文件夹,程序严谨性file.mkdirs();}// 获取到上传文件的名称String filename = upload.getOriginalFilename();// 把文件的名称修改成为一的值 sdfs-csdf-fwer-sdfwString uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase();// 唯一的值filename = uuid+"_"+filename;System.out.println("文件名称:"+filename);// 上传文件upload.transferTo(new File(file,filename));return "suc";}
}

http://www.lryc.cn/news/407084.html

相关文章:

  • 计算机实验室排课查询小程序的设计
  • 分享几种电商平台商品数据的批量自动抓取方式
  • mysql面试(五)
  • 微软全球蓝屏带来的思考及未来战争走向
  • 以FastGPT为例提升Rag知识库应用中的检索召回命中率
  • ffmpeg更改视频的帧率
  • 设计模式13-单件模式
  • 怎么给PDF文件加密码?关于PDF文件加密的四种方法推荐
  • GoFly快速开发框架基于Go语言和Vue3开发后台管理附件管理插件包
  • matlab实验:实验六MATLAB 数值计算与符号运算
  • 基于STM32设计的老人摔倒检测系统(4G+华为云IOT)(193)
  • PyTorch和TensorFlow概念及对比
  • github的Codespaces是什么
  • Unity UGUI 之 图集
  • rust日常提问
  • Vue3与Element-plus配合 直接修改表格中的一项数据——控制输入框的显示与隐藏
  • 设计模式--创建型
  • Vue3时间选择器datetimerange在数据库存开始时间和结束时间
  • 鼠标移入事件 mouseover
  • UE4 自动换行——按排序关键字1.2.3.
  • Object.entries()解析出来的数组顺序乱了,健是string类型
  • SSM(Spring + Spring MVC + MyBatis)框架面试三道题
  • ctfshow-web入门-php特性(web132-web136)
  • 通信原理-实验六:实验测验
  • 意得辑润色新用户注册直减15%
  • 重拾CSS,前端样式精读-函数(颜色,计算,图像和图形)
  • 经纬恒润与奇瑞汽车签订新能源项目重点供应商合作协议,共同开启合作新篇章
  • @RestController和@Controller
  • STM32-寄存器DMA配置指南
  • 【Django】anaconda环境变量配置及配置python虚拟环境