关于ntko从后台传输文档时发生文件存取错误,暨关于response使用的注意点
实现目的,主要是将 ntko editoffice.jsp intializePage(url) 下的url改成从本地地址,改成可以返回二进制文档流的后台接口地址。
令人奇怪的是不管怎么弄,ntko总是会跳出文件存取错误的窗口,数据流postman看过了没问题,路径后台显示已经访问成功了。
解决方案:
response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
添加这行,代码设置response编码格式。按理说,问题就应该解决了,但我这一行代码写在了response.getOutputStream后面了,结果出现和正确代码相似99%,但问题依然在的情况。
后来发现,response光有.addHeader("Content-Disposition")还不行,还需要写在response.setContentType()前面,写在后面就会出错。那个如果是要写在后面的话是用.setHeader可以通过,原因应该是response.setContentType方法同时已经设置了header了,需要用setHeader来覆盖。这个坑有点深,我半天爬不出来。
最后代码:
控制器部分:
public void getWord (String fileNameDisk, HttpServletResponse response){try{System.out.println(fileNameDisk);System.out.println("=============生成word数据=================");byte[] data=service1.getWordBytes(fileNameDisk);System.out.println("=============添加到response===============");response.addHeader("Content-Disposition","attachment;filename="+new String(fileNameDisk.getBytes()));//这个很重要不加会出错response.addHeader("Content-Length",""+data.length);//这个要放在前面response.setContentType("multipart/form-data");OutputStream out=new BufferedOutputStream(response.getOutputStream());out.write(data);out.flush();out.close();
// response.setCharacterEncoding("utf-8");
// response.setContentType("application/msword;charset=UTF-8");
// String header="attachment;filename="+fileNameDisk;
// response.addHeader("content-disposition",header);}catch(IOException e){e.printStackTrace();}}
sevice部分
public byte[] getWordBytes(String fileNameDisk) throws IOException{String url=FilePathInfo.absoluteOfficeFileDir+fileNameDisk;File f=new File(url);// byte[]result=new byte[(int) f.length()];FileInputStream fis=new FileInputStream(url);InputStream is=new BufferedInputStream(fis);byte[]result=new byte[is.available()];is.read(result);//用fis 和 is结果似乎差不多is.close();return result;}
关于ntko从后台传输文档时发生文件存取错误,暨关于response使用的注意点相关推荐
- html保存导入word文档格式,WordPress网站在导入Word文档时如何保持原有格式
WordPress程序后台有文章发布功能,可以添加文字和图片.如果想将自己在排版好的Word 文档导入到WordPress ,作为文章发布,却不是一件容易的事情,如果我们直接复制,Word 文档本身的 ...
- SPA 项目 之 后台接口文档
SPA 项目 之 后台接口文档 SPA 项目 之 后台接口文档 用户注册 用户登录 数据增加 数据删除 数据修改 数据查询 SPA 项目 之 后台接口文档 用户注册 用户注册接口调用: http请求方 ...
- 开发在线文档时,这个技术难点你解决了吗?
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. "时势造英雄",是亘古不变的真理.在当前的时代背景下,在线文档可以称得上是这样的&quo ...
- ireport生成html横线多出,iReport4.5.1、Struts2.2.3生成Html文档时页面红叉叉的解决办法。...
iReport4.5.1.Struts2.2.3生成Html文档时页面红叉叉的解决办法. 这些个小红叉叉甚的恼人! 解决方法如下: 而且后台报错: 提示找不到名字为px的action 警告: Coul ...
- php列表显示教程,Dedecms后台管理文档列表显示自定义字段方法教程
有客户提出要求,在DEDECMS后台管理文档列表中,需要在列表中显示自定义的字段内容,在默认状态下,这些字段是不会再列表中显示的,下面就是解决方法: 找到dede/content_list.php文件 ...
- mongodb插入文档时不传ObjectId
type BookExt struct {ID bson.ObjectId `bson:"_id"`Title string `bson:"title"`Sub ...
- html图片按页码显示,html - 在打印html文档时显示页码 - 堆栈内存溢出
几个月前,当我使用以下代码在浏览器(firefox)中打印HTML文档时,能够显示页码: body { width: 300px; counter-reset: page; } #header { b ...
- vb.net 设置打印纸张与页边距_装订文档时不想让文字被挡住?在Excel中你可以这样设置打印!...
平时我们在打印文档的时候,通常会把文档左侧的页边距设置的大一点,这样在装订的时候显得美观一点.但如果我们进行双面打印时,文档左右两边的页边距刚好相反,装订时第2页的文本很容易被挡住,这样子反而更难装订 ...
- 关于Typora编辑器编写markdown文档时插入出现前字吞后字的解决方法
关于Typora编辑器编写markdown文档时插入出现前字吞后字的解决方法 原因是按到了键盘上的Insert键,使得编辑模式变为了改写,所以会把文本替换掉,这个按键没有状态标示.
最新文章
- python点到向量的距离,夹角
- Httpwatch 工具介绍
- CodeForces - 1506G Maximize the Remaining String(单调栈+贪心)
- Java趣味分享:try/finally
- 数据传输服务 DTS > 数据迁移 > 支持的数据库和迁移类型
- POJ3264Balanced Lineup(线段树)
- Egret入门学习日记 --- 第八篇(书中 2.0~2.6节 内容)
- Python编写的强大的、通用的解析器
- 网上图书购买系统可行性研究报告
- 把数字翻译成字符串(递归,动态规划)
- python采集小说网站完整教程(附完整代码)
- 不用下载软件,免费将PDF文件缩小的方法分享
- Elasticsearch2.3.4集群安装指南
- 数据库异常状态:Recovery Pending,Suspect,估计Recovery的剩余时间
- java最常见的三种问题,404,500以及无法访问
- 启示录java游戏_龙之幻想启示录(正版)
- 吐槽大会java_Rust吐槽大会纪要
- 高通转单台积电,联发科的高端梦悬了
- 高速公路隧道交通安全设施的设置、管理要点
- linux浏览器无法下载,红芯浏览器目前已经无法正常下载到