页面设置隐藏的iframe

<iframe id='reqFrame' frameborder='0'  style='display:none' allowtransparency='true' ></iframe>

页面下载按钮

<a  class="easyui-linkbutton" data-options="iconCls:'icon-ok'"  title="/demo/省本部固定资产明细表.xlsx" 
id="btnDown" href="javascript:void(download('btnDown'))" >下载模板</a>

页面JS脚本

 function download(id){
$("#reqFrame").attr("src",encodeURI("/servlet/Common?action=downloadByPath&filePath="+$("#"+id).attr("title")));
}

后台servlet方法

public class SV_Common extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L; public static final Logger logger = Logger.getLogger(SV_Common.class
.getName()); protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
try {
if ("downloadByPath".equals(action)) { //下载指定路径的文件
downloadByPath(request, response);
} else {
throw new IllegalArgumentException("没有相匹配的操作类型,请检查opp变量.");
}
} catch (Exception ex) {
ex.printStackTrace();
}
} private void downloadByPath(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
String filePath = request.getParameter("filePath");
logger.info("filePath="+filePath);
String fileFullName = filePath.substring(filePath.lastIndexOf("/") + 1); response.reset();
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {
logger.info("User-Agent=firefox");
response.setHeader(
"Content-Disposition",
"attachment;filename=" + new String(fileFullName.getBytes("UTF-8"), "ISO8859-1")
);
} else {
logger.info("User-Agent=not firefox");
response.setHeader(
"Content-Disposition",
"attachment;filename=" + URLEncoder.encode(fileFullName, "UTF-8")
);
}
File file = new File(PathUtil.getPath("") + "/" + filePath);
response.setContentType(new MimetypesFileTypeMap().getContentType(file)); OutputStream out = response.getOutputStream();
BufferedInputStream in = null;
byte[] buffer = new byte[8192];
int length;
try
{
in = new BufferedInputStream(
new FileInputStream(file),8192
); while ( (length = in.read(buffer)) != -1)
{
out.write(buffer, 0 ,length);
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally
{
if (out != null)
{
try {out.close();}
catch (IOException ex) {}
out = null;
}
if (in != null)
{
try {in.close();}
catch (IOException ex) {}
in = null;
}
}
response.flushBuffer();
};
}

JAVA 文件下载乱码问题解决办法的更多相关文章

  1. paip.java swt 乱码问题解决

    paip.java swt 乱码问题解决 看累挂,Dfile.encoding是gbk的.. 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专 ...

  2. ASP+Access UTF-8 网页乱码问题解决办法

    用ACCESS数据库和ASP做网站时用UTF-8编码有时会出现乱码,再者网页出错或者刷新页面后就是乱码,如果数据库取值乱码在开头加上<%@LANGUAGE="VBSCRIPT" ...

  3. openerp 7.0邮件接收中文附件乱码问题解决办法

    openerp 7.0邮件接收中文附件乱码问题解决办法: 修改文件\addons\mail\mail_thread.py #1064 line插入代码: h=email.Header.Header(n ...

  4. 关于jFinal开发中遇到的中文乱码问题解决办法

    关于jFinal开发中遇到的中文乱码问题解决办法 设置tomcat的编码,修改 <Connector port="8080" protocol="HTTP/1.1& ...

  5. JAVA文件下载功能问题解决日志

    今天给报告系统做了个下载功能,遇到了挺多问题,通过查资料一一解决了. 1.首先遇到的问题是:java后台的输出流输出之后,没有任何报错,浏览器端不弹出保存文件的对话框,原本是ajax请求到后台的con ...

  6. Servlet中文乱码问题解决办法

    首先对于源jsp网站和servlet里面的字符集要一样,一般支持中文的字符集为UTF-8最好采用这个字符集(除此之外还有gb2312); 对于源jsp文件的代码中需要设置 设置你的page里面的字符集 ...

  7. zabbix图形乱码问题解决办法

    zabbix中的图形乱码的问题解决办法: 1.下载字体,例如:simkai.ttf楷体(注:在windows中的字体格式可能是TTC的,所以去网上下载一个ttf的字体) 2.上传到linux中(我使用 ...

  8. PuTTY乱码问题解决办法

    原文链接:http://www.henshiyong.com/archives/403.html 使用PuTTY 时,遇到了乱码问题,查看了别人介绍的信息,解决掉了. 方法其实很简单,现在分享出来. ...

  9. loadrunner乱码问题解决办法

    7.LoadRunner回放脚本时,在浏览器显示的中文是乱码 最近,遇到了好多乱码的问题,解决了一些,还有最后一个乱码,能想到的各种办法都试过了,还是不行,很奇怪啊. 解决这些乱码时,涉及到了http ...

随机推荐

  1. android使用广播退出应用程序

    由于在(Widget或Service.BroadcastReceiver中)使用startActivity()方法启动activity时需使用FLAG_ACTIVITY_NEW_TASK flag,所 ...

  2. C#删除微信自定义菜单

    删除 string access_token = "你的token"; string posturl = "https://api.weixin.qq.com/cgi-b ...

  3. scrapy shell 中文网站输出报错.记录.

    UnicodeDecodeError: 'gbk' codec can't decode bytes in position 381-382: illegal multibyte sequence 上 ...

  4. 2014年12月23日00:42:54——PS4

    http://tieba.baidu.com/p/3415598015?see_lz=1&pn=1 http://tieba.baidu.com/p/3188981817 http://tie ...

  5. 如何讓Android系統顯示CJK擴展區漢字

    由於一些特殊需要,需要在個人設備上顯示CJK擴展區漢字,經多方詢問並驗證,找到了一下辦法,暫總結如下. 一.電腦上顯示 在電腦(Windows,Linux,Mac等系統)上可以通過安裝「花園明朝字體」 ...

  6. YII 开启URL伪静态

    1.开启apache的mode_rewrite模块 去掉LoadModule rewrite_module modules/mod_rewrite.so前的“#”符号 确保<Directory ...

  7. PDO操作mysql数据库(二)

    从 MySQL 数据库读取数据 <?php $server = "localhost"; $user = "root"; $pwd = "123 ...

  8. MySQL修改时区的方法小结

    这篇文章主要介绍了MySQL修改时区的方法,总结分析了三种常见的MySQL时区修改技巧,包括命令行模式.配置文件方式及代码方式,需要的朋友可以参考下 方法一:通过mysql命令行模式下动态修改 1.1 ...

  9. Yii 跨域设置

    控制器设置: abstract class ControllerBase extends Controller { public function __construct($id, $module, ...

  10. 【python】python的二元表达式和三元表达式

    二元表达式 x,y=4,3if x>y: s = yelse: s= x print s   x if x<y else y 三元表达式: >>> def f(x,y): ...