java - 中止流 servlet 响应
问题描述
我正在从 servlet(实际上是 Spring Boot 控制器,但没关系)向客户端流式传输未知大小的响应。
我通过调用强制提前发送标头,flush()
以便客户端(浏览器)可以正确显示下载已开始。
如果流中间发生错误怎么办?现在客户端只是获取文件的一部分并且不知道它是坏的。
根据在流式传输 Http 请求的主体时如何处理错误,我应该在 Socket 上使用 TCP RST 或写入一些不是有效的分块编码数据的垃圾。
不幸的是,我没有找到访问底层套接字的方法,也无法编写格式错误的响应——ServletResponse#getOutputStream
在内部进行分块,我也找不到绕过它的方法。
解决方案
推荐阅读
- yaml - Github 操作中对已安装 sdk 的依赖
- google-apps-script - Apps 脚本中 Google 表格中行高亮的 3 种状态
- python - 无法将 NLTK 导入 Jupyter Notebook
- mysql - MySQL 无法启动 - 错误:su:警告:无法将目录更改为 / 不存在:没有这样的文件或目录
- python-3.x - 如何输出带换行符的字符串,并在数字之前分隔?[Python]
- scala - 我无法让我的 scalaFX 菜单栏显示在我的 gui 中
- ruby-on-rails - 引导模式没有弹出rails 6
- c# - 创建 ApplicationDbContext 对象
- rust - 如何在 Cargo 中创建 C 静态库?
- r - 从 Shiny 输入制表符并将其提供给函数