解决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
-
java中response对象用法实例分析
本文实例讲述了java中response对象用法.分享给大家供大家参考,具体如下: <jsp:forward>动作元素用于运行时在服务器端结束当前页面的执行,并从当前页面转向指定页面. 使用response对象的setHeader()方法可以设置页面的自动刷新时间间隔.实现每隔60秒重新加载本页面的语句为: 复制代码 代码如下: response.setHeader("refresh",60); 而实现3秒后浏览器加载新页面http://www.jb51.net的语句为:
-
response.setHeader各种用法详解
一秒刷新页面一次 response.setHeader("refresh","1"); 二秒跳到其他页面 response.setHeader("refresh","2;URL=otherPagename"); 没有缓存: response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control&qu
-
解决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
随机推荐
- ASP.NET实现Hadoop增删改查的示例代码
- javascript中不等于的代码是什么怎么写
- jQuery选中select控件 无法设置selected的解决方法
- Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
- Flex字体加粗问题只能对英文的字体加粗
- js 3秒后跳转页面的实现代码
- 禁止网站显示文件目录列表的2个方法(htaccess)
- JAVA设计模式之建造者模式原理与用法详解
- 利用ASP.NET MVC和Bootstrap快速搭建响应式个人博客站(一)
- js监听滚动条滚动事件使得某个标签内容始终位于同一位置
- 简单实例处理url特殊符号&处理(2种方法)
- asp.net下结合HttpHandler实现图片防盗链
- python3 shelve模块的详解
- 解读Python selenium的等待方式
- 批处理文件制作实例精彩教程第1/5页
- asp.net中Repeart选中整行操作实例
- 解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
- 使用iframe window的scroll方法控制iframe页面滚动
- Android 中HttpURLConnection与HttpClient使用的简单实例
- 威金变种 rundl132.exe RichDll.dll,f1.exe,f2.exe,f3.exe,f4,exe,f5.exe,f11.exe解决方法