基于Spring MVC的文件上传和下载功能的实现
配置文件中配置扫描包,以便创建各个类的bean对象
<context:component-scan base-package="com.neuedu.spring_mvc"></context:component-scan>
一、文件的上传
Spring MVC 上下文中默认没有为文件上传提供了直接的支持,因此默认情况下不能处理文件的上传工作
如果想使用 Spring 的文件上传功能,需现在上下文中配置 CommonsMultipartResovler:
1、加入jar包:
commons-fileupload-1.3.1.jar
commons-io-2.4.jar
Maven项目通过在pom.xml文件中配置jar包依赖
<dependency>
<groupId>commons-fileupload</groupId>
3 <artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
10 </dependency>
2、在SpringMVC配置文件中配置CommonsMultipartResovler
<!-- 配置CommonsMultipartResolver,必须配置id值为multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
<!-- 以字节为单位 -->
<property name="maxUploadSize" value="1024000"></property>
</bean>
3、表单的设置
POST请求,file类型,enctype="multipart/form-data"
<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">
文件:<input type="file" name="file"/>
描述:<input type="text" name="desc"/>
<input type="submit" value="上传"/>
</form>
4、上传的实现
@Controller
public class TestController {
@RequestMapping(value="/upload",method=RequestMethod.POST)
public String upload(@RequestParam(value="desc") String desc,
@RequestParam(value="file") CommonsMultipartFile file,HttpServletRequest request) throws IOException{
ServletContext context = request.getSession().getServletContext();
//获取真实路径,使用tomcat插件,默认路径为webapp下
String realPath = context.getRealPath("/upload"); //判断upload文件夹是否存在
File file1=new File(realPath);
if(!file1.exists()){
file1.mkdir();
} //文件名添加uuid,防止重复
String uuid=UUID.randomUUID().toString().replace("-", "");
String fileName=uuid+"_"+file.getOriginalFilename();
//获取输入流
InputStream in=file.getInputStream();
//获取输出流,指定输出路径及文件名
FileOutputStream out=new FileOutputStream(new File(realPath+"\\"+fileName));
IOUtils.copy(in, out);
out.close();
in.close();
return "success";
}
}
二、文件的下载
用ResponseEntity<byte[]> 返回值完成文件下载
@Controller
public class TestController {
@RequestMapping(value="/download")
public ResponseEntity<byte[]> download(HttpSession session) throws IOException{
byte[] body=null;
ServletContext context = session.getServletContext();
String fileName="d5b9b61dc7154f5c9df4c844348ef6df_fennu.jpg"; //获取文件路径
String filePath = context.getRealPath("/upload/"+fileName);
//读取文件内容
InputStream in=new FileInputStream(new File(filePath));
//创建文件字节数组,数组长度为文件的总大小
body=new byte[in.available()];
//将文件内容保存到字节数组中
in.read(body); //创建响应头信息的MultiValueMap
MultiValueMap<String, String> headers=new HttpHeaders();
//设置文件名重新编码,以gbk格式读取再编码为iso8859-1
fileName=new String(fileName.getBytes("gbk"), "iso8859-1");
//设置响应信息
headers.add("Content-Disposition", "attachment;filename="+fileName); HttpStatus statusCode=HttpStatus.OK;
ResponseEntity<byte[]> responseEntity=new ResponseEntity<byte[]>(body, headers, statusCode);
in.close();
return responseEntity;
}
}
基于Spring MVC的文件上传和下载功能的实现的更多相关文章
- Java Web 学习(8) —— Spring MVC 之文件上传与下载
Spring MVC 之文件上传与下载 上传文件 表单: <form action="upload" enctype="multipart/form-data&qu ...
- Spring MVC的文件上传和下载
简介: Spring MVC为文件上传提供了直接的支持,这种支持使用即插即用的MultipartResolver实现的.Spring MVC 使用Apache Commons FileUpload技术 ...
- 0062 Spring MVC的文件上传与下载--MultipartFile--ResponseEntity
文件上传功能在网页中见的太多了,比如上传照片作为头像.上传Excel文档导入数据等 先写个上传文件的html <!DOCTYPE html> <html> <head&g ...
- Spring MVC-学习笔记(5)spring MVC的文件上传、下载、拦截器
1.文件上传. spring MVC为文件上传提供了直接的支持,这种支持是即插即用的MultipartResolver(多部分解析器)实现的.spring MVC使用Apache Commo ...
- 使用Spring MVC实现文件上传与下载
前段时间做毕业设计的时候,想要完成一个上传文件的功能,后来,虽然在自己本地搭建了一个ftp服务器,然后使用公司的工具完成了一个文档管理系统:但是还是没有找到自己想要的文件上传与下载的方式. 今天看到一 ...
- Spring MVC实现文件上传
基础准备: Spring MVC为文件上传提供了直接支持,这种支持来自于MultipartResolver.Spring使用Jakarta Commons FileUpload技术实现了一个Multi ...
- Spring MVC的文件上传
1.文件上传 文件上传是项目开发中常用的功能.为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data.只有在这种情况下,浏览器才会把用户 ...
- 【Spring学习笔记-MVC-13】Spring MVC之文件上传
作者:ssslinppp 1. 摘要 Spring MVC为文件上传提供了最直接的支持,这种支持是通过即插即用的MultipartResolve实现的.Spring使用Jakarta Co ...
- spring mvc ajaxfileupload文件上传返回json下载问题
问题:使用spring mvc ajaxfileupload 文件上传在ie8下会提示json下载问题 解决方案如下: 服务器代码: @RequestMapping(value = "/ad ...
随机推荐
- CSS中盒子垂直居中的常用方法
在前端开发过程中,盒子居中是常常用到的.其中 ,居中又可以分为水平居中和垂直居中.水平居中是比较容易的,直接设置元素的margin: 0 auto就可以实现.但是垂直居中相对来说是比较复杂一些的.下面 ...
- 通过class类获取类的方法信息
测试:
- Spring整合web项目原理
- Properties & Method
[Properties] 1.lazy property,通过@property来定义, lazy property的属性直到使用的时候才初始化: 2.Computed Properties: 2.对 ...
- 01.webservice介绍
不实现异构,实现远程系统之间的调用.
- convertTo
转自 http://blog.csdn.net/xiaxiazls/article/details/51204265 在使用Opencv中,常常会出现读取一个图片内容后要把图片内容的像素信息转为浮点并 ...
- 关于for循环的一个小问题
有如下程序: package com.lk.B; public class Test5 { public static void main(String[] args) { // TODO Auto- ...
- Ubuntu16.04 ARM平台移植libcurl curl-7.63.0
libcurl是免费的轻量级的客户端网络库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,POP3, P ...
- 在线创建MongoDB免费集群(MangoDB Atlas)
MongoDB Atlas是MongoDB的云服务,构建在亚马逊的AWS上,MongoDB允许用户在上面创建一个免费集群作为学习使用. 1. 注册MongoDB cloud账号: 访问www.mong ...
- 僵固式思维 OR 成长式思维
有意无意中,看到这样的一篇文章,觉得非常富有正能量,而且也比较有同感.而且,不仅仅对于职场暂时失落或者失意的人有帮助,就是对学生,也一样的.故特分享,以共勉之. 我想每个新人进入职场之后都会遇到的第一 ...