springboot ResponseEntity 实现文件下载(文件损坏,以及乱码)

AttachedFile attachedFile = attachedFileService.selectById(fileId);
String filePath = pathHead + attachedFile.getFilePath();
String fileName = attachedFile.getFileName() + "." + attachedFile.getExtension();
FileSystemResource file = new FileSystemResource(filePath);
HttpHeaders headers = new HttpHeaders();
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
headers.add("Content-Disposition", String.format("attachment; filename=\"%s\"", fileName));
headers.add("Pragma", "no-cache");
headers.add("Expires", "0");
return ResponseEntity
.ok()
.headers(headers)
.contentLength(file.contentLength())
.contentType(MediaType.parseMediaType("application/octet-stream"))
.body(new InputStreamResource(file.getInputStream()));
//HttpHeaders headers = new HttpHeaders();
////下载显示的文件名,解决中文名称乱码问题
//String downloadFileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
////通知浏览器以attachment
//headers.setContentDispositionFormData("attachment", downloadFileName);
////application/octet-stream : 二进制流数据(最常见的文件下载)。
//headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//return new ResponseEntity<>(FileUtils.readFileToByteArray(file),
// headers, HttpStatus.CREATED);

    我是按照网上正常给的教程写的,但是就是文件损坏,(好像是数据流就不对)

    ![图片说明](http://i![图片说明](https://img-ask.csdn.net/upload/201711/05/1509890721_393189.png)mg.ask.csdn.net/upload/201711/05/1509890701_819933.png)
0

2个回答

我也被这个问题困扰了蛮久。归根到底还是不了解springboot的配置。
mvc的配置如何转换成springboot的配置就是解决这个问题的关键

1楼回答的是在MVC配置文件里面解决。

springboot的解决方案是增加如下一个类 去配置 MessageConverters。
加上注解@Configuration 就会被springboot加载配置。成功解决如上问题。

@Configuration
public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    super.configureMessageConverters(converters);
    converters.add(new ByteArrayHttpMessageConverter());
}

}

1
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java鬼混笔记:用Spring的ResponseEntity进行文件下载
Spring的ResponseEntity下载文件
springmvc ResponseEntity 下载文件损坏问题解决方法
这两天做一个文件下载功能,基本上使用的就是springmvc的ResponseEntity来做的,这块代码就不贴了,网上大把大把的,问题是下载的文件总是提示【文件损坏】导致打不开,word,excel,zip文件统统打不开,研究来研究去网上答案很多但是都不解决问题,唯一解决问题的就是这个帖子,地址如下:http://www.iteye.com/topic/1125784,作者解决问题的思路也很棒。...
Spring MVC 文件下载过程中 出现下载文件乱码
在使用一个框架时,程序员分为三种级别  1.看demo开发  2.看文档开发  3.看源码开发  明显1不如2,2不如3  但是考虑时间成本3不如2,2不如1  我的原则是  有好的demo不看文档,有好的文档不看源码  对于文件下载,再简单不过了,但我比较傻,不会自己写  于是在google搜索"Spring mvc 3 download",demo版本都差不多 
spring boot 用ResponseEntity实现下载文件(解决前后端分离跨域问题)
前言 最近项目集成spring cloud了,所有接口都由网关转发,刚开始写了一个下载文件接口是直接将文件写到OutputStream的,但这样做后就会导致网关截拦器取不到用户信息(网关目前是单机部署,用户信息由security框架写到内存中的),最后用org.springframework.http.ResponseEntity实现了文件下载。 1、OutputStream @ApiOpera...
解决Spring文件下载时文件损毁问题
spring文件下载、文件损坏解决方法
使用SpringMVC的ResponseEntity方式下载文件
ResponseEntity 下载文件,需要传入3个参数,分别是:请求体、请求头和状态码可根据返回值返回 byte[]、或String类型 @RequestMapping(&quot;/exportCert/{container}&quot;)public ResponseEntity&amp;lt;String&amp;gt; exportCert(@PathVariable(&quot;container&quot;) String contain...
Springboot文件下载
Springboot文件下载需要知道一下知识点: Springboot对资源的描述提供了相应的接口,其主要实现类有ClassPathResource、FileSystemResource、UrlResource、ByteArrayResource、ServletContextResource和InputStreamResource。 ClassPathResource可用来获取类路径下的资
使用Spring的ResponseEntity.ok().header下载文件时中文乱码解决
@GetMapping("/files/{filename:.+}") @ResponseBody public ResponseEntity serveFile(@PathVariable String filename) { Resource file = storageService.loadAsResource(filename); St
Response对象以及从服务端下载文件(解决乱码问题)
学java也有一段时间了,一直都没有写过博客,今天来写第一篇java学习经历的博客吧今天学习的主要是response对象,在这里先放一个思维导图Response对象作为响应,可以实现从服务端写数据到客户端,常见的如从服务端下载文件到客户端,代码如下:、package download; import java.io.BufferedInputStream; import java.io.File...
ResponseEntity实现文件下载
需求: 点击页面上的超链接,然后下载服务器端的文件: ResponseEntity需要传入3个参数,分别是:请求体、请求头和状态码 具体的代码如下: @RequestMapping("/testResponseEntity") public ResponseEntity testResponseEntity(HttpSession session) throws IOExce
SpringBoot的文件下载
SpringBoot的文件下载方法有很多,此处只记录使用Spring的Resource实现类FileSystemResource做下载,其余实现类照葫芦画瓢即可。 直接上干货: 第一、下载模版(下载的主要代码)/** * 文件下载 * * @param file * @return */ public ResponseEntity<Fil
SpringMVC 使用ResponseEntity实现文件下载
下载文件: (1)获取要下载的文件名,注意编码; (2)在HttpHeaders中设置以下载方式打开,设置MIME类型; (3)用FileUtils.readFileToByteArray()读取文件数据;用ResponseEntity构建返回对象 /** * Create a new {@code HttpEntity} with the given body, headers,...
spring mvc 下载文件 IE浏览器文件名是乱码
页面下载文件时,内容都是中文,只有文件名是乱码,在谷歌等浏览器下是可以的,查了下资料是浏览器兼容性问题 写一个转换 /** * * @Title: processFileName * * @Description: ie,chrom,firfox下处理文件名显示乱码 */ public static String
解决SpringMVC返回的ResponseEntity出现乱码
问题:前台通过数据到后台查询相关数据,结果是后台返回的数据出现中文出现乱码,如下图所示 原因:对于String类型,在没有在代码中明确指定编码类型的情况下,可能后台对传输的数据没有正确编码(本人的猜测,时间有限,后面有时间会跟下源码和看看文档,发现真正的原因) 解决:将String类型改为用户自定义的Pojo,如User等,或者改为List这些比较高级一点的数据类型。然后通过@Resp
SpringMVC使用ResponseEntity实现文件下载
上一篇写了文件上传,文件下载的配置过程同文件上传,有需要的请http://blog.csdn.net/c______________/article/details/77512017 本文主要通过ResponseEntity//下载练习 @RequestMapping(value="/testDownload") public ResponseEntity<byte[]> tes
SpringMvc下载文件损坏
SpringMvc下载文件损坏问题描述问题原因解决方案 问题描述 我的项目使用的是spring4.5 零xml配置方式搭建的,今天在处理文件下载的时候,发现pdf文件下载后总是提示文件损坏,无法打开。 问题原因 问题原因是java中会默认将InputStrem流转为String类型,再将String转换为OutputStream,如果文件中存在图片、音频、视频等内容时就会出错。 解决方案 在co...
springboot文件下载
  springboot实现单个文件的下载 https://blog.csdn.net/wilson_m/article/details/79196966
springboot注解实现excel下载
利用注解实现excel导出。PubCloudFrmAgrmController是controller层,ResponseEntity是返回给前端的excel下载流。调用下载只需new ExportExcel("框架协议数据", FrmAgrmExcelOutVo.class).setDataList(list).getResponseEntity()。 ExcelField.java是注解类,ExportExcel.java是注解解释类。
ResponseEntity发送乱码,HttpResponse response接收乱码问题解决
在通过HttpClient或URL方式请求数据的过程中,难免会出现乱码的问题,笔者在项目开发过程中就遇到了此问题,在网上找了一堆资料,都是在接收端解决问题,忽略了发送端的编码问题,所以在接收端所有办法都用了还是不行,现在把解决的办法贴出业,希望能帮助到遇见相同问题的朋友。直接上代码 一、接收端  import java.io.BufferedReader; import java.io.IOE...
关于ResponseEntity<?>乱码的问题
今天改造一个接口,突然发现前端拿到后乱码,开始以为是前端的问题,经过测试不是前端的锅,直接上代码,看看错在哪里,引以为戒吧! 错误写法: Paste_Image.png 正确写法: Paste_Image.png 直接使用请求返回的对象即可。 乱码原因是: 我们已经使用springMVC的@ResponseBody注解,返回Resp...
解决springmvc文件下载,内容损坏问题
问题描述:    java 中inputstream流 转成string,再将String转换会inputStream,下载下来的文件,内容损坏,例如下载word文档使用场景:    底层服务读取到文件内容获得InputStream,因为需要多次接口调用,为了便于数据传递,将InputStream转换为String字符串进行传递,上层服务调用接口,获取String字符串,在转换成InputStre...
SpringBootWeb文件下载实例
使用SpringBoot开发的几个浏览器文件下载的小例子,仅作为测试使用。项目是java开发工具Ieda15的springboot Maven工程
springboot下载Excel模板,Excel表损坏问题
当前开发一个Excel表模板下载功能,模板读取和模板下载都是么有问题的,但打开Excel表示提示,文件已损坏。现象如下:   开始以为是代码问题,但文件下载就那几行代码,应该是不会有问题的,在网上搜寻了一番,问题浮出水面,链接如下: https://www.jianshu.com/p/9d39745f6ce6 问题根因是在maven编译时Excel模板表就已经被损坏了,下载一个已经被损...
使用Feign实现文件下载
      之前一直也没用Feign做过文件下载,文件上传倒是做过,以往都是只返回文件在服务器上地址,再由服务消费者或者客户端去下载,但这两天在做将activiti做成服务,而做过activiti的都知道,流程模型的bpmn.xml文件和图片都是以BLOB存在数据库,所以必须由服务提供者将文件传给客户端。在网上查了一番,发现几乎没有feign做文件下载的博客,想想也是,一般也不会有人这样做。尝试了...
使用ResponseEntity完成下载功能时在IE8下无法正常使用问题
在使用ResponseEntity 进行下载时,谷歌、火狐、IE8以上版本等均能正常下载,但在某些低版本的IE8下无法正常加载,在网上查了些资料,最终问题解决了,代码如下:     异常代码及异常状况如下:   异常状况:   看网上资料说ContentType():方法可以直接设置响应头content-type的内容,也就是告诉浏览器以什么方式打开数据,并且可以指定相应的编...
SpringBoot项目部署开发环境,Excel模板下载文件损坏,提示恢复问题处理
Spring Boot 静态资源Excel模板文件下载遇到的坑 问题描述: 使用spring boot,在resource/static目录下,有Excel模板文件, 需要提供给用户下载,用于数据的导入; 在eclipse中启动应用服务,使用文件输出流下载文件,文件下载成功,打开的时候提示文件内容有问题,打开失败; 即使是使用springboot封装的,直接使用静态资源下载的方式,也还是会出现一样...
springmvc中利用ResponseEntity进行文件下载
@RequestMapping(value=&quot;/testResponseEntity&quot;) public ResponseEntity&amp;lt;byte[]&amp;gt; testResponseEntity(HttpServletRequest request) throws Exception{ byte[] body = null; InputStream is = request.getS...
spring mvc文件下载,因配置json转换,自动将ResponseEntity转为json导致无法下载
首先我们需要保证项目是一个SpringMVC的项目,spring相关的jar包依赖都存在,另外我们的项目中必须有一个目录来存放需要下载的文件,如下图所示的download目录下有我们需要下载的文件。 接下来我们需要编写一个文件下载的Controller,我们使用Rest风格的请求。首先创建一个download方法,返回值类型为ResponseEntity,请求的路径为/d...
Spring Boot 微服务之间通过FeignClient进行大文件下载:
  使用FeignClient作为中间件进行一个微服务之间的调用的时候,一般的服务请求是没有什么问题,但是,当下载大文件,会出现:java heap space 也就是堆溢出问题。   具体解决方案如下:   1、首先是service层返回ResponseEntity&amp;lt;Resource&amp;gt; 2、@FeignClient的remote接口返回Response对象(Feign...
关于springboot框架下动态生成文件下载功能异常的解决方案
之前在开发过程中遇到过几次需要生成文件并拼接成一个下载链接用接口传到前端供用户下载的情况当时用的是ssm+tomcat,就直接将文件生成在webapp下用tomcat静态资源映射就好了现在改用springboot后,遇到了一个问题,tomcat是内置在springboot里面的,我们就无法配置一个项目内部的位置存储生成的文件以及拼接下载链接了。我是这样子解决的,我用一个固定的资源位置,如E://,...
java鬼混笔记:用Spring的ResponseEntity和poi进行excel生成和下载
用poi下载excel
springMVC-HttpEntity(ResponseEntity)demo
自留demo。springMVC-HttpEntity(ResponseEntity)与jQuery交互的小结demo。
springMVC下载+文件名乱码+从配置文件读取路径
[code=&quot;java&quot;]public ModelAndView download(HttpServletRequest request,HttpServletResponse response) throws Exception { String fileName = request.getParameter(&quot;fileName&quot;); String filePath ...
Spring MVC 文件下载IE浏览器不支持的问题解决
今天碰到一个比较奇怪的技术问题,使用Spring MVC做文件下载时,FireFox、Chrome浏览器下载都没有遇到问题,IE 11缺不能正常下载,总是提示“可能已删除或移动文件”。大家都说是IE浏览器不支持HTTP CREATED(201)状态码,但事实上我返回的是HTTP OK(200)状态码,但问题依然得不到解决,因此引起此问题的原因跟这个HTTP状态码是无关的。
java response 文件下载 文件名 乱码
filename使用iso8859-1编码方式: new String (filename.getBytes("utf-8"),"iso8859-1");
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
在做PHP程序时,需要使用PHP做的文件下载 那做就做呗把代码复制过来改了一改。 很多效果也出来了 那么点击下载后,恩,本以为搞定了文件下载,谁知道,图片打开的时候提示文件损坏,这我就观察了文件的大小。似乎真是多了 1KB左右。 使用PS打开,恩,提示了损坏,不过图象可以出来。 那么我就认为是 那多出来的 1kb的问题了。 然后,我把一个txt上传上去,然后下载. 果然发现,文件的前
java+VUE,下载文件,前端接受的问题。
downloadExcel(param).then(res =&amp;gt; { let link = document.createElement(‘a’); link.href = window.URL.createObjectURL(res); var filename = “调查问卷.xlsx”; link.download = filename; link.click(); }); downl...
springMVC 文件下载
 springmvcdownload文件下载 [java] view plaincopyprint? package com.clj.test.down.util;    import java.io.File;  import java.io.IOException;    import org.apache.commons.io.FileUtils;  imp
response文件下载之解决中文名乱码问题
package com.itheima.content; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.s...
BufferedOutputStream和BufferedInputStream获取网络文件不完整的解决方法。
看来越简单的地方越是容易忽略,一个常用的api就暴漏了自己对细节的不讲究,以此记录,谨防遗忘。
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 大数据学习路线以及资料 学习大数据的经历以及规划