下载文档--Struts2中国人似乎是空文件下载格问题

前言:近期公司项目中用到文件下载,依据底层,决定使用struts2的文件下载模式。

乱码大多数都攻克了,竟然出现中文文件下载时,中文文字显示为空格的奇葩现象。在经过近三个小时的查询各种文档和苦思冥想,终于发现了问题。见网上还没有战友发出这个现象的文章,所以就写出来,分享给大家。

Struts2的配置文件里:

<!--数据文件下载 -->

<actionname="downloadTemplFile" class="fileDownloadAction">

<result name="success" type="stream">

<paramname="contentType">text/plain</param>

<paramname="contentType">application/octet-stream;charset=ISO8859-1</param>

<paramname="contentDisposition">attachment;fileName="${downloadFileName}"</param>

<paramname="inputName">inputStream</param>

<paramname="bufferSize">1024</param>

</result>

</action>

Java的使用方式:

publicString getDownloadFileName() {

String fileName1 =ServletActionContext.getRequest().getParameter("fileName");

try {

fileName1= new String(fileName1.getBytes("ISO8859-1"), "utf-8");

}catch (UnsupportedEncodingException e1) {

e1.printStackTrace();

}

String downFileName = fileName1;

try {

downFileName = newString(downFileName.getBytes(), "ISO8859-1");

} catch (Exception e) {

e.printStackTrace();

}

System.out.println("downFileName====================>"+downFileName);

return downFileName;

}

publicInputStream getInputStream() throws Exception{

String  fileName1 =ServletActionContext.getRequest().getParameter("fileName");

Stringname = new String(fileName1.getBytes("ISO8859-1"),"utf-8");

System.out.println("name===========>"+name);

InputStreamin =ServletActionContext.getServletContext().getResourceAsStream("/custMonitorFile/"+name);

System.out.println(in);

returnin;

}

@Override

publicString execute() throws Exception {

return SUCCESS;

}

说明:

为什么Java源代码中转两次?

回答:

//第一次 从jsp的get或者post获取的字段须要转码。

String fileName1 =ServletActionContext.getRequest().getParameter("fileName");

fileName1 = newString(fileName1.getBytes("ISO8859-1"), "utf-8");

//第二次 设置中文文件名称要以“ISO8859-1”的格式发给client。

String downFileName = fileName1;

downFileName = newString(downFileName.getBytes(), "ISO8859-1");

注意:一定要弄清楚每次转码的目的,始发与终点。

如有好的建议,可留言或发至笔者邮箱:fzb_xxzy@163.com

版权声明:本文博客原创文章,博客,未经同意,不得转载。

下载文档--Struts2中国的文件下载被显示为空间的问题的更多相关文章

  1. 通过ifrmae异步下载文档

    //通过ifrmae异步下载文档 function iframeGetFile(opts) { var defaultOpts = { filePath: '', onload: function ( ...

  2. windows server 2008 r2 下发布网站excel有时候无法下载文档

    最近将公司网站服务器更新了系统,从win2003 到 win2008 r2 (64bit),一切正常,但是使用网站的过程中发现了一个比较奇怪的问题,就是,有时候网站的excel文档无法下载,但是我什么 ...

  3. book118免费下载文档方法【转】

    需要用的工具: 1.360浏览器 2.点"全屏预览",然后把鼠标放在"下载该文档",右键"审查元素",找到 途中箭头指向的标签(如图) 3. ...

  4. Book118免费下载文档方法

    在book118上下载文件时,对于小文件可以使用冰点文库下载器来下载,而对于大文件,则可以使用下面的方法: 需要用的工具: 1.360浏览器 2.点“全屏预览”,然后把鼠标放在“下载该文档”,右键“审 ...

  5. SAP下载文档为乱码

    通过事物WE60下载的文档为乱码,主要原因是编码格式的不匹配,通常默认的编码格式为ANSI编码,那么我们需要将源码的编码格式转换成UTF-8,这样问题可以解决了.   附:编码格式介绍 不同的国家和地 ...

  6. Bootstrap提供的CDN服务标签与下载文档

    目录 1.引入Bootstrap提供的CDN服务 1.选择下载Bootstrap CDN 二:下载Bootstrap官方文档 1.进入Bootstrap官网,选择3版本中文档. 1.引入Bootstr ...

  7. MVC 点击下载文档

    动态生成的List,view页面: <a href=\"#\" class=\"onlyedu-btn\" id=\"downloadError ...

  8. 下载文档时Safari浏览器下载后出现".html"问题

    下载代码是需要设置 Response.ContentType = "application/octet-stream", 不要设为application/x-msdownload, ...

  9. MVC下载文档

    public FileStreamResult DownFile(string content,string name) { ProInterface.ISubject ems = new ProSe ...

随机推荐

  1. HDU4960Another OCD Patient(间隙dp,后座DP)

    Another OCD Patient Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Ot ...

  2. Spring、Spring MVC、MyBatis

    Spring.Spring MVC.MyBatis整合文件配置详解 使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. Sp ...

  3. WPF3D学习,立方体的绘制

    原文:WPF3D学习,立方体的绘制 以此为一个好的开始吧!一直都太懒,坚持写文章是个不错的开始!碰巧最近在研究WPF3D这块的知识,也为了练练自己的写作水平,整理这篇文章.新手上路,多多关照! 本文先 ...

  4. go语言实现遍历目录,及查找特定的文件类型

    // filelist.go package main import ( //"flag" "fmt" "os" "path/fi ...

  5. Hive ERROR: Out of memory due to hash maps used in map-side aggregation

    什么时候hive在运行大数据量的统计查询语句时.常常会出现以下OOM错误.详细错误提演示样例如以下: Possible error: Out of memory due to hash maps us ...

  6. 重写ViewPager实施单一交有关切换到这个问题,并没有缓存

    我们需要解决这个问题:切换时,可以实现单独的消息到左和右,但我不知道的情况下根据岗位总数.只是不知道ViewPagerAdapter的getCount数量. 因为帖子内容的数据图片和布局比較复杂.所以 ...

  7. sails不是内部或外部命令的解决方案

    1 安装好node 2 安装sails 打开cmd窗口,用命令 npm -g install sails 安装sails 安装完成后,用命令  sails new testProject 创建项目 会 ...

  8. 微信电脑版(Mac和Windows)安装

    内容简介 1.微信Windows版 2.微信Mac版 3.总结优势 微信电脑版 众所周知,腾讯公司(马化腾先生执掌的巨头公司)开发的超成功App:微信.一经推出便引发业界轰动,使用人数更是直逼QQ. ...

  9. HDU 1061 Rightmost Digit解决问题的方法

    求大量N^N的值最右边的数字,即最低位. 它将能够解决一个简单二分法. 只是要注意溢出,只要把N % 10之后.我不会溢出,代替使用的long long. #include <stdio.h&g ...

  10. 作为一个新人,如何学习嵌入式Linux?

    作为一个新人.如何学习嵌入式Linux?我一直在问太多次,特写文章来回答这个问题. 在学习嵌入式Linux之前.肯定要有C语言基础.汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会).C语言要 ...