一、Servlet实现方式


import java.io.File;
import java.io.IOException;
import java.io.OutputStream;import javax.servlet.http.HttpServletResponse;import org.apache.commons.io.FileUtils;public class MyController {public static void downLoadFile(HttpServletResponse response, File file) {if (file == null || !file.exists()) {return;}OutputStream out = null;try {response.reset();response.setContentType("application/octet-stream; charset=utf-8");response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());out = response.getOutputStream();out.write(FileUtils.readFileToByteArray(file));out.flush();} catch (IOException e) {e.printStackTrace();} finally {if (out != null) {try {out.close();} catch (IOException e) {e.printStackTrace();}}}}}

二、SpringMVC方式

public ResponseEntity<byte[]> download(String fileName, File file) throws IOException {String dfileName = new String(fileName.getBytes("gb2312"), "iso8859-1");HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);headers.setContentDispositionFormData("attachment", dfileName);return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);}

需要加入乱码配置:

<!-- 设置json和response的字符编码 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list><bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /><bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"><list><value>text/plain;charset=UTF-8</value></list></property></bean></list></property>
</bean>

springMVC实现文件下载(附带Servlet方式)相关推荐

  1. 基于 Nginx XSendfile + SpringMVC 进行文件下载

    转自:http://denger.iteye.com/blog/1014066 基于 Nginx XSendfile + SpringMVC 进行文件下载 PS:经过实际测试,通过 nginx 提供文 ...

  2. SpringMVC中文件下载

    3. SpringMVC中文件下载 3.1 文件下载的流程 # springmvc中文件下载1. 定义用户将服务器中文件下载到自己本地计算机中过程称之为文件下载2. 开发文件下载1). 定位系统中哪些 ...

  3. SpringMVC 实现文件下载

    SpringMVC 实现文件下载有两种方式: 常规方法 // 下载后的文件名称String filename = new String("xxx.dox","ISO885 ...

  4. springmvc、struts2、servlet的联系与区别

    一 servlet - 体系(组织)结构图 图1 - servlet体系(组织)结构图 - 网 参考: Servlet学习笔记五(相关接口与类) - 哔哩哔哩 Servlet继承体系 - 码农岛 错题 ...

  5. 总结:SpringMVC 中 GET 和 POST 方式请求中的中文乱码问题

    2019独角兽企业重金招聘Python工程师标准>>> 以下是 SpringMVC 中 GET 和 POST 方式请求中的中文乱码问题的解决方法. 1,GET 方式中文乱码: 修改t ...

  6. springmvc接收日期字段处理方式

    springmvc接收日期字段处理方式 1.使用InitBinder初始化绑定(有效范围 当前controller) /*** 日期属性编辑器*/@InitBinderpublic void init ...

  7. 前端文件下载的打开方式

    前端文件下载的打开方式 1.a标签 2.window.open 3.location.href 4.location.其他属性 5.XMLHttpRequest 1.a标签 <a href=&q ...

  8. SpringMVC学习(二)——快速搭建SpringMVC开发环境(注解方式)

    文章目录 说明 1.工程搭建 2.注解配置 2.1.context:annotation-config说明 2.2.context:component-scan配置说明 2.3.mvc:annotat ...

  9. SpringMVC,SpringBoot文件下载

    前言 最近严查security, 导致原来暴露出去的s3不能用了,不允许public的s3,暂时的折中方案是自己做跳转.于是需要在SpringMVC中实现文件下载功能. 关于文件存储的设计 文件存储通 ...

最新文章

  1. Android开发者指南(5) —— monkeyrunner
  2. opencv gpu cuda项目整理
  3. android VectorDrawable使用笔记(五)
  4. Hibernate 基本配置文件+基本增删改查
  5. 算法-数组中重复的数字
  6. 数据运营者的福音:海量数据处理利器Greenplum
  7. LeetCode 36有效的数独37解数独(八皇后问题)
  8. kafka的消费隔离级别(持续更新中)
  9. java保存登录信息_java – 保存登录详细信息(首选项)android
  10. 职教云自签系统部署教程及源码
  11. 【Python实例第1讲】交叉验证预测曲线的画法
  12. Qt实战开发-数字软键盘
  13. 仅需一行代码,小白也可以制作自己的专属二维码!
  14. js获取当前域名的方法
  15. 我要换博客啦~Github+Hexo~Windows版本
  16. 图像处理​​​​​​​--十大经典算法
  17. 谈谈电子设计中PCB上的ESD防护方法
  18. java机试题---2021(算法)
  19. 软件著作权保护的内容
  20. 陈关荣老师整理的复杂网络的…

热门文章

  1. [armv8-arch64]linux kernel 5.9的异常量表介绍(irq,fiq,sync,svc)
  2. 密码学基础知识(七)公钥密码
  3. Wireshark抓取数据包
  4. vbs删除非空文件夹
  5. 160个Crackme021
  6. 【PHP】网络相关封装的函数
  7. 19、Java Swing JToolBar:工具栏组件
  8. Java多线程(1)—线程初探
  9. Thymeleaf表达式
  10. Quartz关闭超时订单