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 ...
随机推荐
- WordPress安装篇(1):使用PHPStudy安装WordPress
我是"小白",既不会编程也不懂CSS能自己搭建网站吗?可以的!只要你会用鼠标,懂打字就能搭建出属于你自己的网站.要怎么样才能做到昵?让我们一起来看看如何实现的吧.在Windows环 ...
- 使用Flutter设计一个好看的"我"页面
近期遇到一些很烦的琐事,状态比较down,很多原本计划好的事情都耽搁了,实在是难顶-- 看到后台一直有朋友问怎么博客和公众号没有更新,所以我忙完得闲就来更了! 前言 起因是最近重拾以前的旧项目(业余做 ...
- 多图:一文带你入门掌握JVM所有知识点
本JVM系列属于本人学习过程当中总结的一些知识点,目的是想让读者更快地掌握JVM相关的知识要点,难免会有所侧重,若想要更加系统更加详细的学习JVM知识,还是需要去阅读专业的书籍和文档. 本文主题内容: ...
- 「模拟8.29」chinese(性质)·physics·chemistry(概率期望)
T1 chinese 根据他的问题i*f[i]我们容易联想到,答案其实是每种方案中每个点的贡献为1的加和 我们可以转变问题,每个点在所有方案的贡献 进而其实询问就是1-k的取值,有多少中方案再取个和 ...
- CMD批处理(5)——自动以管理员身份运行批处理脚本
在日常运维工作中,为方便对windows用户进行系统安装或配置等,使用Windows自带的批处理(bat文件)是一种最为简单快速的方法. 批处理脚本不会默认已管理员身份运行,一般情况下,我会将脚本命名 ...
- mysql 事务,锁,隔离机制
mysql架构 锁 为了解并发问题,引入锁,mysql中锁分为读锁和写锁,即share lock和exclusive lock.故名思义,share lock之间不互斥,share lock和excl ...
- ceph-csi源码分析(5)-rbd driver-nodeserver分析(上)
更多 ceph-csi 其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi源码分析(5)-rbd driver-nodeserver分析(上) 当c ...
- Terraform模块Module管理,聚合资源的抽取与复用
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: T ...
- Linux 之 deb 包生成、安装、卸载
Linux 之 deb 包的生成.安装和卸载 deb DEB 是 Debian 软件包格式的文件扩展名,是 Unixar 的标准归档,将包文件信息以及包内容,经过 gzip 和 tar 打包而成. d ...
- css实现相框效果
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>& ...