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 ...
随机推荐
- 10: java数据结构和算法: 构建哈夫曼树, 获取哈夫曼编码, 使用哈夫曼编码原理对文件压缩和解压
最终结果哈夫曼树,如图所示: 直接上代码: public class HuffmanCode { public static void main(String[] args) { //获取哈夫曼树并显 ...
- Android客户端网络预连接优化机制探究
一.背景 一般情况下,我们都是用一些封装好的网络框架去请求网络,对底层实现不甚关注,而大部分情况下也不需要特别关注处理.得益于因特网的协议,网络分层,我们可以只在应用层去处理业务就行.但是了解底层的一 ...
- 【题解】coin HDU2884 多重背包
题目 Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- WPF使用 INotifyPropertyChanged 实现数据驱动
如下图,有这么一个常见需求,在修改表单明细的苹果价格时,总价会改变,同时单据总和也随之改变. 按照Winfrom事件驱动的思想来做的话,我们就需要在将UI的修改函数绑定到CellEdit事件中来实现. ...
- 玩转STM32MP157- 使用fbtft驱动 lcd ili9341
之前使用了 fbtft 成功驱动了lcd st7735r,现在尝试下驱动 ili9341, 配置 跟之前用 fbtft 驱动 st7735r 一样,先用 make menuconfig 配置内核,添加 ...
- centos7安装kubernetes1.18.5
一.设置hosts 修改主机名 [root@localhost kubernetes]# hostnamectl set-hostname master69 四台服务器安装kebernetes,一个m ...
- GetModuleFileName函数的用法
函数的功能 获取exe可执行文件的绝对路径. 用法 通过获取到exe的路径,可以获取到程序路径下(父路径或者子路径)的一些其它文件路径. 函数原型 DWORD WINAPI GetModuleFile ...
- Terraform插件Provider管理,搜索、定义、下载
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: Ter ...
- 1、Linux下源码编译安装PostgreSQL
操作系统:Centos7 说明:postgresql必须在postgres用户下初始化数据库和启动,否则报错. PostgreSQL的特性 PostgreSQL是一种几乎可以运行在各种平台上的免费的开 ...
- 不带Anchors和NMS的目标检测
前言: 目标检测是计算机视觉中的一项传统任务.自2015年以来,人们倾向于使用现代深度学习技术来提高目标检测的性能.虽然模型的准确性越来越高,但模型的复杂性也增加了,主要是由于在训练和NMS后处理过 ...