一、SpringMVC实现文件的上传
Spring MVC 上下文中默认没有为文件上传提供了直接的支持,因 此默认情况下不能处理文件的上传工作,
如果想使用 Spring 的文件上传功能,需现在上下文中配置 CommonsMultipartResovler:
二、文件上传的步骤:
1.加入jar包:
commons-fileupload-1.3.1.jar
commons-io-2.4.jar
2.在SpringMVC配置文件中配置CommonsMultipartResovler
1
2
3
4
5
|
<!-- 配置文件上传 --> <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,input类型:file,(官网:www.fhadmin.org)属性:enctype="multipart/form-data"
1
2
3
4
5
|
<form action= "${pageContext.request.contextPath }/testUpload" method= "post" enctype= "multipart/form-data" >
file:<input type= "file" name= "photo" >
desc:<input type= "text" name= "desc" >
<input type= "submit" value= "上传" >
</form>
|
4.文件上传方法的实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
@RequestMapping ( "/testUpload" )
public String testUpload(HttpServletRequest request, @RequestParam (value= "desc" ,required= false )String desc, @RequestParam ( "photo" ) CommonsMultipartFile file){
ServletContext servletContext = request.getServletContext();
String realPath = servletContext.getRealPath( "/upload" );
File file1 = new File(realPath);
if (!file1.exists()){
file1.mkdir();
}
OutputStream out = null ;
InputStream in = null ;
//uuid_name.jpg
String prefix = UUID.randomUUID().toString();
prefix = prefix.replace( "-" , "" );
String fileName = prefix+ "_" +file.getOriginalFilename();
System.out.println(fileName);
try {
out = new FileOutputStream( new File(realPath+ "\\" +fileName));
in = file.getInputStream();
//创建一个缓冲区(官网:www.fhadmin.org)
byte buffer[]= new byte [ 1024 ];
//判断输入流中的数据是否已经对完
int len= 0 ;
//循环将输入流读入到缓冲区中(len=in.read(buffer)>0)表示in里面还有数据
while ((len=in.read(buffer))!=- 1 ){
//使用FileOutPutStream输出流,将缓冲区的数据输出到指定目录文件
out.write(buffer, 0 ,len);
}
} catch (Exception e) {
e.printStackTrace();
}
//关闭输入流、输出流(官网:www.fhadmin.org)
try {
out.close();
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "success" ;
} |
三、文件的下载
文件能上传就能下载
1.用ResponseEntity<byte[]> 返回值完成文件下载:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
@RequestMapping (value= "/testDownLoad" )
public ResponseEntity< byte []> testDonwLoad(HttpServletRequest request) throws Exception{
ServletContext servletContext=request.getServletContext();
String fileName= "风吹麦浪.mp3" ;
String realPath = servletContext.getRealPath( "/WEB-INF/" +fileName);
InputStream in= new FileInputStream( new File(realPath));
byte [] body= new byte [in.available()];
in.read(body);
MultiValueMap<String, String> headers= new HttpHeaders();
fileName= new String(fileName.getBytes( "gbk" ), "iso8859-1" );
headers.set( "Content-Disposition" , "attachment;filename=" +fileName);
HttpStatus status=HttpStatus.OK;
ResponseEntity< byte []> responseEntity= new ResponseEntity<>(body, headers,status);
in.close();
return responseEntity;
}
|
相关推荐
SpringMVC笔记内容:第...第二天(跳转方式(forward、redirect)、@ResponseBody、SpringMVC作用域传值的方式、文件上传、文件下载、跨服务器上传);第三天(SpringMVC异常处理、自定义拦截器、拦截器栈) --author:
springMVC笔记以及实例,视频为黑马程序员教学视频,记录了所有的笔记以及例题,包括文件上传以及文件跨服务器上传
springmvc详细笔记,文件上传,rest与spring集成
https://pan.baidu.com/s/1j1cUTFkiFsBJEZAjB6AFvg,文件太大上传不了,所以放入百度网盘链接,压缩文件里面是提取码,这个为全部资料
springMVC入门笔记,包括环境搭建、传递参数、从控制器获取参数、文件的上传、验证、异常的处理。
笔记: 笔记id,笔记类型,摘要标题,笔记图片,笔记内容描述,笔记文件,是否回收站,上传用户,上传时间 笔记收藏: 收藏id,被收藏笔记,收藏用户,收藏时间 留言: 留言id,留言标题,留言内容,留言人,留言时间,管理回复,回复...
笔记: 笔记id,笔记类型,摘要标题,笔记图片,笔记内容描述,笔记文件,是否回收站,上传用户,上传时间 笔记收藏: 收藏id,被收藏笔记,收藏用户,收藏时间 留言: 留言id,留言标题,留言内容,留言人,留言时间,管理回复,回复...
笔记: 笔记id,笔记类型,摘要标题,笔记图片,笔记内容描述,笔记文件,是否回收站,上传用户,上传时间 笔记收藏: 收藏id,被收藏笔记,收藏用户,收藏时间 留言: 留言id,留言标题,留言内容,留言人,留言时间,管理回复,回复...
springMVC传递模型数据、文件上传、异常处理、拦截器的实战代码,简单的示例,适合初学者。代码详细,可以直接复制使用。
springmvc基础学习,包括响应数据和结果视图、 SpringMVC 实现文件上传、 SpringMVC 中的异常处理、 SpringMVC 中的拦截器
EL表达式、Filter)、mysql、jdbc、文件上传与下载、Ajax、jQuery、struts2、struts2高级、spring、hibernate、shiro、springmvc、mybatis、webservice、maven、svn、activiti、lucene、linuxPPT
文件上传配置 自定义HttpMessageConverter MappingJackson2HttpMessageConverter StringHttpMessageConverter 服务器端推送技术 SSE Servlet3.0+异步方法处理 Spring MVC的测试 ...
# personal-blog 个人博客 springmvc + spring +mybaits 的框架 欢迎大家一起合作来完成这个博客系统 -------- ...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
2019-06-21SpringMVC学习笔记中的源代码,主要用于交流学习,实现包括文件上传等大部分基础功能,程序亲测全部实现
Spring+SpringMVC+MyBatis,用到了maven,...这个是淘宝上买的java项目总大小10.22G(包含视频、源码、笔记、sql脚本),这里上传了源码(不到200M),同时附上视频及其他文件云盘链接,亲测可用,受益匪浅,欢迎下载!
│ 06.FastDFS安装步骤-文件上传.avi │ 07.配置nginx插件访问图片.avi │ 08.测试图片上传.avi │ 09.FastDFS工具类的使用.avi │ 10.图片上传过程分析.avi │ 11.图片上传Service.avi │ 12.图片上传完成.avi │ ...
JSP基于SSM宠物医院专家预约宠物交流系统可升级SpringBoot毕业源码案例设计 ...开发环境:myEclipse,Eclipse或Idea + mysql数据库 ...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
不多说,懂得人看名字就能知道,挺好的一套案例,包含讲解视频和完整案例。 内容: 『课程目录』: ├─众筹项目-第01天...广告模块-文件上传分析5 Q+ T5 k V+ @! Z7 t │ 5.广告模块-文件上传功能实现 │ ...