springMVC-10-文件上传
导入依赖(注意会和servlet-api依赖冲突)
<!--文件上传jar包, 前面已导过servlet-api需排除-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
文件上传
upload.jsp
<%--enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。
在此处这个编码格式,在java中接受的实例是:MultipartFile--%>
<form method="post" enctype="multipart/form-data">
file:<input type="file" name="source"><br>
<input type="submit" value="上传">
</form>
control
//接受文件
@RequestMapping(value = "file")
public String MyFile(MultipartFile source, HttpSession session) throws IOException {
System.out.println("source---->>"+source);
System.out.println("session--->>"+session);
//获取上传文件的原始名称
String originalFilename = source.getOriginalFilename();
System.out.println("原始名称"+originalFilename);
//获取上传文件的类型
String contentType = source.getContentType();
System.out.println("上传文件的类型"+contentType);
//生成唯一的文件名防止提交的文件重名
String uniqueFileName = UUID.randomUUID().toString();
System.out.println("生成的唯一文件名"+uniqueFileName);
//获取文件后缀名
String extension = FilenameUtils.getExtension(originalFilename);
System.out.println("文件后缀名"+extension);
//把刚刚生成的唯一文件名和后来从原始文件名那里获取来的后缀组成完整的唯一文件名
String uniqueFileName2 = uniqueFileName+"."+extension;
System.out.println("唯一文件名(完整)"+uniqueFileName2);
//返回该项目中参数目录的绝对路径
String realPath = session.getServletContext().getRealPath("/upload");
System.out.println("/upload目录的绝对路径:(这里有点问题"+realPath);
//保存文件
source.transferTo(new File(realPath+"//"+uniqueFileName2));
return "success";
}
还需要注册(springmvc配置文件中)
<!--配置文件上传的解析器:
mvc.xml 中注册上传解析器(id固定为 multipartResolver)-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--以下属性可配可不配-->
<!-- 默认编码 -->
<property name="defaultEncoding" value="utf-8" />
<!-- 设置multipart请求所允许的最大大小,默认不限制 -->
<property name="maxUploadSize" value="10485760000" />
<!-- 设置一个大小,multipart请求小于这个大小时会存到内存中,大于这个内存会存到硬盘中 -->
<property name="maxInMemorySize" value="40960" />
</bean>
我们还需要创建对应的upload文件夹就比如现在我们就需要在D:\Coding\IntellijProjects\SpringMVC-Project\out\artifacts\MVC_4_dataHandle_war_exploded目录下创建upload,直接在项目下创建upload目录是没用的
文件下载
jsp界面
<a href="${pageContext.request.contextPath}/download?name=sample.txt">下载</a>
control(不需要返回值)
@RequestMapping(value = "/download")
public void download(String name, HttpSession session, HttpServletResponse response) throws IOException{
String realPath = session.getServletContext().getRealPath("/upload");
String filePath = realPath+"\\"+name;
System.out.println("要下载的文件:"+filePath);
//设置响应头,告知浏览器,要以附件的形式保存文件
//filename=浏览器显示的文件下载名
IOUtils.copy(new FileReader(filePath),response.getOutputStream());
}
另外还需要在指定的upload文件夹下放一个stample.txt文件
springMVC-10-文件上传的更多相关文章
- springmvc图片文件上传接口
springmvc图片文件上传 用MultipartFile文件方式传输 Controller package com.controller; import java.awt.image.Buffer ...
- SpringMVC学习--文件上传
简介 文件上传是web开发中常见的需求之一,springMVC将文件上传进行了集成,可以方便快捷的进行开发. springmvc中对多部件类型解析 在 页面form中提交enctype="m ...
- Spring +SpringMVC 实现文件上传功能。。。
要实现Spring +SpringMVC 实现文件上传功能. 第一步:下载 第二步: 新建一个web项目导入Spring 和SpringMVC的jar包(在MyEclipse里有自动生成spring ...
- SpringMVC之文件上传异常处理
一般情况下,对上传的文件会进行大小的限制.如果超过指定大小时会抛出异常,一般会对异常进行捕获并友好的显示出来.以下用SpringMVC之文件上传进行完善. 首先配置CommonsMultipartRe ...
- springmvc实现文件上传
springmvc实现文件上传 多数文件上传都是通过表单形式提交给后台服务器的,因此,要实现文件上传功能,就需要提供一个文件上传的表单,而该表单就要满足以下3个条件 (1)form表彰的method属 ...
- 【SpringMVC】文件上传Expected MultipartHttpServletRequest: is a MultipartResolver错误解决
本文转载自:https://blog.csdn.net/lzgs_4/article/details/50465617 使用SpringMVC实现文件上传时,后台使用了 MultipartFile类, ...
- 关于SpringMVC的文件上传
关于文件的上传,之前写过2篇文章,基于Struts2框架,下面给出文章链接: <关于Struts2的文件上传>:http://www.cnblogs.com/lichenwei/p/392 ...
- 一起学SpringMVC之文件上传
概述 在Web系统开发过程中,文件上传是普遍的功能,本文主要以一个简单的小例子,讲解SpringMVC中文件上传的使用方法,仅供学习分享使用,如有不足之处,还请指正. 文件上传依赖包 如下所示,文件上 ...
- SpringMVC+ajax文件上传实例教程
原文地址:https://blog.csdn.net/weixin_41092717/article/details/81080152 文件上传文件上传是项目开发中最常见的功能.为了能上传文件,必须将 ...
- 6.学习springmvc的文件上传
一.文件上传前提与原理分析 1.文件上传必要前提: 2.文件上传原理分析: 3.需要引入的jar包: 二.传统方式文件上传程序 1.pom.xml <dependency> <gro ...
随机推荐
- python+selenium基础篇,键盘操作
1.任务要求:打开百度,在百度搜索里面输入python,通过键盘复制python到搜狗搜索,粘贴到搜狗搜索框中 实现代码如下: from selenium import webdriver from ...
- npm install 动不动卡住咋办?
Hello 我是大粽子 孩子静消消,必定在作妖.我这三天静消消,也是在憋大招. 提前预告下,最近和视频号的文档正在较劲,剩下的功能大家猜猜.暂时没有留言功能,可以私信回复,猜对的下次购买时提我大名10 ...
- MySQL 全文索引实现一个简单版搜索引擎
前言 只有Innodb和myisam存储引擎能用全文索引(innodb支持全文索引是从mysql5.6开始的) char.varchar.text类型字段能创建全文索引(fulltext index ...
- csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」
夜莺与玫瑰 题解 联赛$T1$莫比乌斯$\%\%\%$ $dead$ $line$是直线 首先横竖就是$n+m$这比较显然 枚举方向向量 首先我们枚举方向向量时只枚举右下方向,显然贡献$*2$就是所 ...
- Mysql优化(出自官方文档) - 第十二篇(优化锁操作篇)
Mysql优化(出自官方文档) - 第十二篇(优化锁操作篇) 目录 Mysql优化(出自官方文档) - 第十二篇(优化锁操作篇) 1 Internal Locking Methods Row-Leve ...
- 创建react项目并集成eslint/prettier/commit-lint
创建 react 项目 npx create-react-app jira-new --template typescript 如果不想使用 TS,而要用 JS 的话,则删除 -template ty ...
- 重新整理 .net core 实践篇—————Mediator实践[二十八]
前言 简单整理一下Mediator. 正文 Mediator 名字是中介者的意思. 那么它和中介者模式有什么关系呢?前面整理设计模式的时候,并没有去介绍具体的中介者模式的代码实现. 如下: https ...
- 最佳实践丨使用Rancher轻松管理上万资源不是梦!
前 言 Rancher 作为一个开源的企业级 Kubernetes 集群管理平台.你可以导入现有集群,如 ACK.TKE.EKS.GKE,或者使用 RKE.RKE2.K3s 自定义部署集群. 作为业界 ...
- kubelet分析-csi driver注册源码分析
kubelet注册csi driver分析 kubelet注册csi driver的相关功能代码与kubelet的pluginManager有关,所以接下来对pluginManager进行分析.分析将 ...
- 流程自动化RPA,Power Automate Desktop系列 - 批量备份Git仓库做好灾备
一.背景 打个比如,你在Github上的代码库需要批量的定时备案到本地的Gitlab上,以便Github不能访问时,可以继续编写,这时候我们可以基于Power Automate Desktop来实现一 ...