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 ...
随机推荐
- 车联网V-2X智能汽车驾驶
车联网V-2X智能汽车驾驶 早期的功能互联汽车无法满足全球车主针对不同应用和定制移动服务的各种需求.这导致较低的客户续订率,较高的建造和运营成本以及较低的组装率.通常,在没有统一平台的情况下,不同的车 ...
- Xilinx Zynq FPGA Boards板
Xilinx Zynq FPGA Boards板 Xilinx Zynq FPGA Boards 介绍 Styx是一个易于使用的Zynq开发模块,具有Xilinx的Zynq ZC7020 SoC和FT ...
- C#中使用swagger小技巧
C#中使用swagger小技巧 swaggerUI显示的接口内容主要用于开发阶段便于与前端联调,不适合发布到对外的站点. 有以下两种方式,让接口不显示在SwaggerUI中 1.使用属性 [ApiEx ...
- C#-防止用户输入具有风险的敏感字符
最近有涉及到要防止用户在网页文本框中输入具有风险的敏感字符所以特地编写了一套针对用户输入的字符进行安全过滤的一个方法,在后台接收到用户输入的字符后调用执行该方法即可完成过滤操作,主要使用正则来匹配并替 ...
- 28.qt quick-ListView高仿微信好友列表和聊天列表
1.视图模型介绍 在Qml中.常见的View视图有: ListView: 列表视图,视图中数据来自ListModel.XmlListModel或c++中继承自QAbstractItemModel或Q ...
- 基于Colab Pro & Google Drive的Kaggle实战
原文:https://hippocampus-garden.com/kaggle_colab/ 原文标题:How to Kaggle with Colab Pro & Google Drive ...
- Java第一次博客作业
第一次博客作业 目录 三次作业题目详情 作业中的错误分析 感想与心得 题目详情 题目1:第一次作业: 类图: 题目2 类图: 题目3 类图: 题目4 题目5 题目6 类图: 题目7 类图: 题目8 第 ...
- 简单sql字段解析器实现参考
用例:有一段sql语句,我们需要从中截取出所有字段部分,以便进行后续的类型推断,请给出此解析方法. 想来很简单吧,因为 sql 中的字段列表,使用方式有限,比如 a as b, a, a b... 1 ...
- SpringMVC 进阶版
请求限制 一些情况下我们可能需要对请求进行限制,比如仅允许POST,GET等... RequestMapping注解中提供了多个参数用于添加请求的限制条件 value 请求地址 path 请求地址 m ...
- noip2007 总结
统计数字 原题 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺 ...