解决response.setHeader设置下载文件名无效的问题
目录
- response.setHeader设置下载文件名无效
- 解决
- response.setheader无效的原因之一
- 原因是
- 输出缓冲区
response.setHeader设置下载文件名无效
response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=down.xls");
设置后,点击下载的文件名无效,是方法的名字
解决
将以上的代码放到流的前面即可。
response.setheader无效的原因之一
最近搭建架构的时候,使用了HandlerInterceptorAdapter,
在afterCompletion 或 postHandle中使用了response.setHeader("token", token);
初衷是想在方法执行完成后,把新的jwt令牌返回给调用方。
但是实际返回中获取不到set的值。
原因是
response的header设置,要在缓冲区装入响应内容之前,http的协议是按照响应状态行、各响应头和响应正文的顺序输出的,后写的header就不生效了。所以在preHandle里写header就可以生效了的。
输出缓冲区
1、Servlet程序输出的HTTP消息的响应正文首先被写入到Servlet引擎提供的一个输出缓冲区中,直到输出缓冲区被填满或者Servlet程序已经写入了所有的响应内容,缓冲区中的内容才会被Servlet引擎发送到客户端。
2、使用输出缓冲区后,Servlet引擎就可以将响应状态行、各响应头和响应正文严格按照HTTP消息的位置顺序进行调整后再输出到客户端。
3、如果在提交响应到客户端时,输出缓冲区中已经装入了所有的响应内容,Servlet引擎将计算响应正文部分的大小并自动设置Content-Length头字段。
4、如果在提交响应到客户端时,输出缓冲区中装入的内容只是全部响应内容的一部分, Servlet引擎将使用HTTP 1.1的chunked编码方式(通过设置Transfer-Encoding头字段来指定)传输响应内容。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Response.AddHeader案例讲解
Response.AddHeader使用实例 1.文件下载,指定默认名 Response.AddHeader("content-type","application/x-msdownload"); // 限制类型 Response.AddHeader("Content-Disposition","attachment;filename=文件名称.rar");// 下载后的文件名称 2.刷新页面 Response.AddHead
-
response.setHeader各种用法详解
一秒刷新页面一次 response.setHeader("refresh","1"); 二秒跳到其他页面 response.setHeader("refresh","2;URL=otherPagename"); 没有缓存: response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control&qu
-
java中response对象用法实例分析
本文实例讲述了java中response对象用法.分享给大家供大家参考,具体如下: <jsp:forward>动作元素用于运行时在服务器端结束当前页面的执行,并从当前页面转向指定页面. 使用response对象的setHeader()方法可以设置页面的自动刷新时间间隔.实现每隔60秒重新加载本页面的语句为: 复制代码 代码如下: response.setHeader("refresh",60); 而实现3秒后浏览器加载新页面http://www.jb51.net的语句为:
-
解决response.setHeader设置下载文件名无效的问题
目录 response.setHeader设置下载文件名无效 解决 response.setheader无效的原因之一 原因是 输出缓冲区 response.setHeader设置下载文件名无效 response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=down.xls")
-
vue中如何下载excel流文件及设置下载文件名
概述 导出excel需求,当点击下载模板或下载反馈结果,axios发起后端接口请求,返回的数据获取 response 时出现乱码,如图: 现总结如下几种处理方法. 1.通过 url 下载 即后端提供文件的地址,直接使用浏览器去下载 通过window.location.href = 文件路径下载 window.location.href = `${location.origin}/operation/ruleImport/template` 通过 window.open(url, '_blank'
-
解决Android popupWindow设置背景透明度无效的问题
有的时候当我们使用popwindow时将当前的activity当做View传给其他fragment使用时会导致我们设置背景变暗效果失效,导致这个原因的问题是因为我们传view后当弹出popupwindw的时候已经不再当前的activity了,所以会显示无效 因此在设置的时候我们这样处理: public void backgroundAlpha(float bgAlpha) { //MApp.getInstance().getMainActivity()就是你想要点击时要显示的主activity
-
response文件流输出文件名中文不显示的解决
目录 文件流输出文件名中文不显示 使用如下方法没有解决 解决方法 response下载时中文文件名乱码 文件流输出文件名中文不显示 response返回文件流 用response.setHeader(“Content-disposition”, “attachment; filename=”+fileName);结果中文名称以“—”下滑下显示. 使用如下方法没有解决 response.setCharacterEncoding("UTF-8"); response.setContentT
-
Android使用TextView,设置onClick属性无效的解决方法
Android在布局文件中为View提供了onClick属性,使用方法如下: <TextView android:id="@+id/user" android:layout_width="@dimen/px_171" android:layout_height="fill_parent" android:onClick="iconClickListener" android:clickable="true&qu
-
PHP中file_exists()判断中文文件名无效的解决方法
本文实例讲述了PHP中file_exists()判断中文文件名无效的解决方法.分享给大家供大家参考.具体方法如下: php中判断文件是否存在我们会使用file_exists函数或is_file函数,但在使用file_exists时如果你文件名或路径是中文在uft8编码文档时是无效.本文就来解决此问题,下面我们一起来看看. 定义和用法: file_exists() 函数检查文件或目录是否存在. 如果指定的文件或目录存在则返回 true,否则返回 false. 例子1 复制代码 代码如下: <?ph
-
解析如何在PHP下载文件名中解决乱码的问题
通过把Content-Type设置为application/octet-stream,可以把动态生成的内容当作文件来下载,相信这个大家都会.那么用Content-Disposition设置下载的文件名,这个也有不少人知道吧.基本上,下载程序都是这么写的: 复制代码 代码如下: $filename = "document.txt";header('Content-Type: application/octet-stream');header('Content-Disposition: a
-
vue中设置height:100%无效的问题及解决方法
在vue.js中写新的components的时候,如果在新页面中的模板中设置height:100%的时候一直无效. App.vue文件 <template> <div id="app"> <router-view/> </div> </template> <script> export default { name: 'App' } </script> <style> #app { font
-
node.js中的http.response.setHeader方法使用说明
方法说明: 设置头文件信息. 如果将要发送的信息已包含头文件,执行该方法后头文件的值将被改写. 如果一个头文件需要传递多个值,可以使用数组. 语法: 复制代码 代码如下: response.setHeader(name, value) 接收参数: name 响应头的类型,注意这个名字是不区分大小写. value 响应头的值 例子: 复制代码 代码如下: response.setHeader("Content-Type", "text/ht
随机推荐
- Aptana 和 JSEclipse 的选择
- 原生Js实现按的数据源均分时间点幻灯片效果(已封装)
- PHP 加密与解密的斗争
- ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
- PHP 实现浏览记录并按日期分组
- C语言之单向链表详解及实例代码
- Vue.js划分组件的方法
- JS弹出可拖拽可关闭的div层完整实例
- php微信支付接口开发程序
- C# XML操作类分享
- Apache,IIS下Discuz x1.5伪静态设置方法
- diskcopy 命令使用说明
- 用用outlook Express 由于服务器拒绝接受发件人的电子邮件地址,这封邮件无法发送
- Java数组的基本操作方法整理
- React Native 真机断点调试+跨域资源加载出错问题的解决方法
- C#文件流读写和进度回调示例详解
- 统计Linux 中文件和文件夹/目录的数量(示例代码)
- 高吞吐、线程安全的LRU缓存详解
- pygame游戏之旅 python和pygame安装教程
- 易语API监视鼠标状态教学