页面设置隐藏的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. Angularjs2——TypeScript学习网站

    https://zhongsp.gitbooks.io/typescript-handbook/content/index.html

  2. LA 3902 Network(树上最优化 贪心)

    Network Consider a tree network with n <tex2html_verbatim_mark>nodes where the internal nodes ...

  3. Speak softly love

    Speak softly love and hold me warm against your heart 柔声诉情,拥我在你暖暖的心上 I feel your words, the tender t ...

  4. bzoj1090:[SCOI2003]字符串折叠

    思路:区间dp,令f[l][r]表示l到r的答案,于是f[l][r]=min(f[l][mid],f[mid+1][r]),如果能折叠f[l][r]=min(f[l][r],f[l][l+len-1] ...

  5. 动态SQL实现批量删除指定数据库的全部进程

    动态SQL实现批量删除指定数据库的全部进程 DECLARE @DatabaseName nvarchar(100) SET @DatabaseName = N'Account_006_Kaikei_2 ...

  6. 虚拟机环境Centos如何上网

    虚拟机环境Centos如何上网----------by ruffianfish.痞子鱼 因为我是用的虚拟机的环境,所以一切操作角度从虚拟机出发. 虚拟机环境的优点: 适合新手学习linux 永远不要怕 ...

  7. python 访问php程序,实现定时

    #!/usr/bin/python #test2.py import sys import urllib2 j = True jj = 1##########用于统计,所以分页, url = 'htt ...

  8. find命令使用, -exec xargs

    find [path]   [expression] 例如:find  /home  -name  \*.o  -exec rm '{}' \; find: 实时精确,支持众多查找标准,遍历指定目录中 ...

  9. ubuntu 在XP下硬盘安装

    以下选择在XP下用 grub4dos 安装 ubuntu 12.04版本 需要下载两个文件:一个是grub4dos,另一个是 ubutuntu 镜像文件 grub4dos下载地址:http://dow ...

  10. React组件一

    <div id='test'></div> <script type='text/babel'> var Zu=React.createClass({ return ...