response的Content-Length设置错误,导致springboot文件下载,代码已经return,postman一直等待到超时

这篇具有很好参考价值的文章主要介绍了response的Content-Length设置错误,导致springboot文件下载,代码已经return,postman一直等待到超时。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在工作中遇到了文件下载的需求,
期初以为也很简单,

DownloadController

package com.example.duohoob.controller;

import java.io.File;
import java.io.FileInputStream;
import java.net.URLEncoder;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.IOUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author yangwei
 * @date 2022年11月3日
 */
@RestController
public class DownloadController {

	/**
	 * 下载
	 * @author yangwei
	 * @date 2022年11月7日
	 * @param response
	 * @throws Exception
	 */
	@RequestMapping("/download")
	public void download(HttpServletResponse response) throws Exception {
		response.setCharacterEncoding("utf-8");
		response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("temp.txt", "utf-8"));
		
		// 注意,就是这一句,10k!
		response.setHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(10240));
		
		// temp.txt文件大小在5k左右
		File file = new File("D:\\doc\\temp.txt");
		FileInputStream fis = new FileInputStream(file);
		ServletOutputStream sos = response.getOutputStream();
		IOUtils.write(IOUtils.toByteArray(fis), sos);
	}
	
}

启动后访问,localhost:8080/download
response content-length,SpringBoot,笔记,spring boot,postman,java
请求处理完后,postman 一直在等待,
response的head儿中设置了content-length,导致写出的数据不相等时,
postman 便一直等待,直至超时,
已写出的数据就是byte字节数组,后台已经处理完并且return。

这样奇怪的问题我还是第一次遇到,

在浏览器是这样,
response content-length,SpringBoot,笔记,spring boot,postman,java
response content-length,SpringBoot,笔记,spring boot,postman,java
我还以为是文件有问题,找了半天也不知道是什么原因,

后来发现了之前别人留下的这一行。。。

response.setHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(10240));

我***!

这一句在header中设置了内容的大小Content-Length是10240个字节,
是10k,temp.txt文件大小在5k左右,这就导致response以为没下完,

便一致在等待,当然是等不到什么结果的,
后来把这一行去掉问题解决了。文章来源地址https://www.toymoban.com/news/detail-797342.html

到了这里,关于response的Content-Length设置错误,导致springboot文件下载,代码已经return,postman一直等待到超时的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决flex布局中justify-content设置成space-between后因数据问题导致最后一行布局错乱

    在常用的flex布局中,当页面展示商品时,因为数据的不确定,导致justify-content设置成space-between,最后一行布局错乱   解决办法就是在小盒子后面添加标签 i 或者span标签,然后不设置高度,宽度和小盒子.box 下的div宽度一样就可以 问题来了设置几个呢,答案是设置该行的n-

    2023年04月16日
    浏览(32)
  • TLS 安全设置未设置为默认设置,这也可能导致此错误。

    edge浏览器打开网页时打示“TLS 安全设置未设置为默认设置,这也可能导致此错误。”,如图: 此时可以通过启用TLS功能处理该问题。控制面板-Internet选项-高级。如图: 启用TLS功能后刷新页面或重启浏览器。之后就不会提示之前的报错了。

    2024年02月11日
    浏览(49)
  • SpringBoot集成Kafka版本不兼容导致出现错误

    1、系统报错 2、排查与解决 出错原因:springboot集成spring-kafka的时候需要注意两者之间的版本对应关系,因为版本不兼容导致出现错误 解决:kafka-clients : 是springboot集成的spring-kafka,spring-kafka中引入了kafka-client的版本 参考:https://spring.io/projects/spring-kafka 参考:https://stackover

    2024年02月14日
    浏览(26)
  • Android studio 设置proxy错误,导致HTTP/1.1 400 Bad Request。

    Android studio 设置proxy 大家在打开一个新项目是,往往需要下载组件和插件。如果出现一下错误信息:     java.io.IOException: Unable to tunnel through proxy. Proxy returns \\\"HTTP/1.1 400 Bad Request\\\" Failed to download any source lists!  原因是连接下载源失败。Proxy returns \\\"HTTP/1.1 400 Bad Request代理失败。 请

    2024年02月05日
    浏览(95)
  • STM32CubeMX v6.9.0 BUG:FLASH_LATENCY设置错误导致初始化失败

    今天在调试外设功能时,发现设置了使用外部时钟之后程序运行异常,进行追踪调试并与先前可以正常运行的项目进行对比之后发现这个问题可能是由于新版本的STM32CubeMX配置生成代码时的BUG引起的。 MCU: STM32H750VBT6 STM32CubeIDE: Version: 1.13.0 Build: 17399_20230707_0829 (UTC) STM32CubeMX: v

    2024年02月15日
    浏览(45)
  • Request Headers和Response Headers中的Content-Type以及ResponseType

    HTTP请求响应过程中的Content-type你真的清楚吗 详解get与post请求方式、content-type与responseType、@Requestbody与@Requestparam的使用场景 axios配置请求头content-type浅谈 HTTP 请求头中的Content-Type类型 背景: Request Headers中的Content-Type: XMLHttpRequest 的 responseType 属性 Response Headers中的Content-Type R

    2024年02月13日
    浏览(60)
  • HTTP请求头响应头的Content-type和Response Type是什么?

    写代码写着写着发现这些HTTP的概念还不清楚,缕一缕。 根据MDN的解释 Content-Type 实体头部用于指示资源的 MIME 类型 MIME 类型,即媒体类型,是一种标准,用来表示文档、文件或字节流的性质和格式。 根据MDN的解释: response.type的值可以是: basic 标准值,同源响应 cors 接收到一

    2024年02月15日
    浏览(39)
  • Minio出现Non-XML response from server. Response code: 400, Content-Type: text/xml; ch的解决

    出现这个问题,基本原因的是因为你的minio的配置出现了错误。 这里要注意,要使用的是Minio启动的时候人家给你的端口和用户名以及密码 然后再去配置Minio的client 然后编写代码的时候先尝试访问桶,能访问到桶在进行接下来的步骤 然后发送请求做一个测试即可

    2024年02月11日
    浏览(39)
  • 解决minio服务器Non-XML response from server. Response code: 404, Content-Type: text/html, body: Sorry

    Non-XML response from server. Response code: 404, Content-Type: text/html, body: Sorry, Page Not Found 修改工具类 发现上传什么的其他功能都正常,感觉可能是minio版本不同导致 修改桶策略,再访问则正常了

    2024年02月05日
    浏览(38)
  • failed to load response data: request content was evicted from inspector cache

    请求接口:请求成功,查看请求显示failed to load response data: request content was evicted from inspector cache 中文翻译:加载响应数据失败:请求内容已从检查器缓存中删除  原因:浏览器返回数据量过大报  解决方法:(注:是在网上查找,本人并没有尝试,其实结果可以console出来,数

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包