页面设置隐藏的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. JAVA中实现百分比

    import java.text.NumberFormat; public class TeachYou { public static void main(String[] args) { //这里 ...

  2. javascript函数 第14节

    <html> <head> <title>function</title> </head> <body> 1.函数形式<b ...

  3. MongoDB源码分析——mongod数据查询操作

    源码版本为MongoDB 2.6分支 Edit mongod数据查询操作 在mongod的初始化过程中说过,服务端接收到客户端消息后调用MyMessageHandler::process函数处理消息. ...

  4. 九度OJ 1107 搬水果 -- 哈夫曼树 2011年吉林大学计算机研究生机试真题

    题目地址:http://ac.jobdu.com/problem.php?pid=1107 题目描述: 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果 ...

  5. 深度优化LNMP之PHP (转)

    深度优化LNMP之PHP   PHP缓存加速介绍   1.操作码介绍及缓存原理     当客户端请求一个php程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码文件(Operate ...

  6. nginx详细配置文件 (转)

    Nginx的代码是由一个核心和一系列的模块组成, 核心主要用于提供Web Server的基本功能,以及Web和Mail反向代理的功能:还用于启用网络协议,创建必要的运行时环境以及确保不同的模块之间平滑 ...

  7. Android学习5—布局简介

    Android界面的布局主要有四种,分别为RelativeLayout.LinearLayout.TableLayout.FrameLayout,接下来分别介绍这些布局如何使用(为了简单起见,接下来的 ...

  8. 在hyper安装openwrt

    写了长长长一篇文章,结果把标签关了,这篇文章就不见了,草稿箱也没有!!! 只好直接copy原来作者的文章了 下载地址 openwrt image tulip driver 引用 Want to add ...

  9. JavaScript学习总结【11】、JS 运动

    动画效果在网站中是一种非常常见的交互式体验效果,比如侧边栏分享.图片淡入淡出,我们把这种动画效果就叫做运动,也就是让物体动起来.如果想让一个物体动起来,无非就是改变它的速度,也就是改变属性值,比如 l ...

  10. [python]filter