文档章节

springmvc 实现文件下载 ResponseEntity<byte[]> 松耦合

ivan005
 ivan005
发布于 2016/04/07 16:09
字数 213
阅读 1657
收藏 2

1、controller实现

    

@RequestMapping("download")  
	public ResponseEntity<byte[]> download() throws IOException {  
	    HttpHeaders headers = new HttpHeaders();  
	   // headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);  
	    //设置文件名
	    headers.setContentDispositionFormData("attachment", "a.xls");  
	    String file = TestController.class.getResource("/config/").getPath()+"a.xls";
	    
	    //把文件转成字节数组
	    File byteFile = new File(file);
	    int size = (int) byteFile.length();
	    FileInputStream inputStream = new FileInputStream(byteFile);
	    byte[] bytes = new byte[size];
	    
	    int offset=0;
	    int readed;
	    while(offset<size && (readed = inputStream.read(bytes, offset,inputStream.available() )) != -1){
	    	offset+=readed;
	    }
	    inputStream.close();
	    
	    //返回
	    return new ResponseEntity<byte[]>(bytes,headers, HttpStatus.OK);  
	}


2、在springmvc.xml配置里面如果配置了messageConverters,则要加上ByteArrayHttpMessageConverter

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<!-- add ByteArrayHttpMessageConverter here -->
				<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
				
				<bean class="org.springframework.http.converter.StringHttpMessageConverter">
					<property name="supportedMediaTypes">
						<list>
							<value>text/plain;charset=UTF-8</value>
							<value>text/html;charset=UTF-8</value>
						</list>
					</property>
				</bean>
				  
				<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
					<property name="supportedMediaTypes">
						<list>
							<value>application/json;charset=UTF-8</value>
						</list>
					</property>

				</bean>
			</list>
		</property>
	</bean>

    因为在xml里配置了AnnotationMethodHandlerAdapter,则会覆盖掉AnnotationMethodHandlerAdapter源码中默认的ByteArrayHttpMessageConverter,造成下载文件乱码



© 著作权归作者所有

ivan005
粉丝 0
博文 13
码字总数 3982
作品 0
湘潭
后端工程师
私信 提问
Spring mvc 下载文件 取消报异常

public ResponseEntity downLoadBook(HttpServletRequest request) { HttpHeaders headers = new HttpHeaders(); HttpStatus httpState = HttpStatus.NOT_FOUND; headers.setContentType(Med......

SmileTower
2015/09/07
1K
1
126.文件下载 是在版本2的基础上完成的

1.效果 2. 后台 2.1 实体类加两个属性 上传的时候 保存属性 2.2 页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-/......

Lucky_Me
2018/05/30
9
0
SpringMVC教程3【文件上传下载,静态资源处理及数据校验】

一,文件上传 web.xml配置通用 引入相关jar包 自定义页面表单 表单提交方式必须是post方式提交,enctype必须是multipart/form-data 自定义Controller接受数据 配置springmvc的配置文件 注意:...

薛小二
04/22
13
0
Spring Boot 入门 - 进阶篇(4)- REST访问(RestTemplate)

经常需要发送一个GET/POST请求到其他系统(REST API),通过JDK自带的HttpURLConnection、Apache HttpClient、Netty 4、OkHTTP 2/3都可以实现。 HttpClient的使用:http://rensanning.iteye.c...

onedotdot
2018/10/17
327
0
springmvc 文件下载

@RequestMapping("/download.htm") public ResponseEntity<byte[]> download(HttpServletRequest request, @RequestParam("fileId") String fileId) throws IOException { String path="E:\U......

KEEP_MOVING
2015/12/31
208
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
11
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部