springMVC框架提供了文件下载的功能,具体操作如下:
1、在springMVC.xml文件中配置ByteArray转换器
<mvc:annotation-driven conversion-service="conversionServiceFactoryBean" > <mvc:message-converters> <!--把ByteArray加在Json前面--> <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg value="UTF-8" /> </bean> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
2、定义controller方法
@RequestMapping("/exportArrangeCourseInfo") public ResponseEntity<byte[]> exportArrangeCourseInfo()throws Exception { String pathName = "D:\排课信息.xls"; File file = new File(pathName);
String fileName = "教师排课信息.xls"; HttpHeaders headers = new HttpHeaders(); //下载显示的文件名,解决中文名称乱码问题 String downloadFielName = new String(filename.getBytes("UTF-8"),"iso-8859-1"); //通知浏览器以attachment(下载方式)打开文件 headers.setContentDispositionFormData("attachment", downloadFielName); //application/octet-stream : 二进制流数据(最常见的文件下载)。 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED); }
3、页面调用下载链接
window.location.href="exportArrangeCourseInfo.action"
这样就可以实现一个简单的文件下载功能了。
参考: