页面设置隐藏的iframe

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

页面下载按钮

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

页面JS脚本

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

后台servlet方法

public class SV_Common extendsHttpServlet {/****/private static final long serialVersionUID = 1L;public static final Logger logger = Logger.getLogger(SV_Common.class.getName());protected voidservice(HttpServletRequest request,HttpServletResponse response)throwsServletException, 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 voiddownloadByPath(HttpServletRequest request,HttpServletResponse response)throwsIOException, 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(newMimetypesFileTypeMap().getContentType(file));OutputStream out=response.getOutputStream();BufferedInputStream in= null;byte[] buffer = new byte[8192];intlength;try{    in= newBufferedInputStream(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(); };
}

转载于:https://www.cnblogs.com/101key/p/3370622.html

JAVA 文件下载乱码问题解决办法相关推荐

  1. java文件下载至linux乱码,JAVA 文件下载乱码问题解决办法

    页面设置隐藏的iframe 页面下载按钮 id="btnDown" href="javascript:void(download('btnDown'))" &g ...

  2. java.net.url 中文乱码_jsp get Url请求方式中文乱码问题解决办法

    本文章来给大家介绍关于jsp get Url请求方式中文乱码问题解决办法,有需要的朋友可参考. jsp中post方式请求一般不会乱码,如果乱码加上这句: 解决办法一 代码如下 复制代码 request ...

  3. linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法

    中文乱码无论在何时都是一个头疼的问题,mysql的存储过程参数也同样存在这个问题. 1.直接使用insert into语句没问题,能够正常插入汉字. 2.把insert into语句移到Procedu ...

  4. libreoffice转换文件为pdf文件乱码问题解决办法

    libreoffice转换文件为pdf文件乱码问题解决办法 参考文章: (1)libreoffice转换文件为pdf文件乱码问题解决办法 (2)https://www.cnblogs.com/heim ...

  5. C# asp.net页面通过URL参数传值中文乱码问题解决办法

    C# asp.net页面通过URL参数传值中文乱码问题解决办法 参考文章: (1)C# asp.net页面通过URL参数传值中文乱码问题解决办法 (2)https://www.cnblogs.com/ ...

  6. UTF-8的CSV文件中文乱码问题解决办法

    UTF-8的CSV文件中文乱码问题解决办法 参考文章: (1)UTF-8的CSV文件中文乱码问题解决办法 (2)https://www.cnblogs.com/leaves1024/p/1117138 ...

  7. php 和mysql中文乱码问题,常见php与mysql中文乱码问题解决办法

    常见php与mysql中文乱码问题解决办法 乱码问题1:用PHPmyAdmin操作MySQL数据库汉字显示正常,但用PHP网页显示MySQL数据时所有汉字都变成了?号. 症状:用PHPmyAdmin输 ...

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

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

  9. Python 乱码问题解决办法

    Python 乱码问题解决办法 参考文章: (1)Python 乱码问题解决办法 (2)https://www.cnblogs.com/FlyCat/archive/2013/04/06/300288 ...

最新文章

  1. 设计模式总结篇系列:适配器模式(Adapter)
  2. 全方位绕过软WAF攻略
  3. 撰写科研海报(poster)的必看技巧
  4. request.getParameterMap的学习
  5. 鼠标移入视频播放,鼠标移出播放停止,恢复到原来状态
  6. python tkinter数据库通讯录_TKINTER--GUI连接数据库登陆
  7. 奔涌吧,前浪,追击吧,后浪
  8. linux卸载tar安装的erlang包,linux - 从tar安装erlang导致错误,想知道如何指定文件夹 - 堆栈内存溢出...
  9. Explorer.exe报错故障解决一例
  10. SMS中关于xp的sp3补丁的分发
  11. python爬虫爬取英文考研词汇
  12. Android 一键加速原理
  13. ftp服务器挂载到手机文件夹,ftp服务器挂载到本地
  14. oracle if else嵌套,else能嵌入if吗
  15. 如何给单元格加斜线?
  16. Oracle 字典表
  17. 联想键盘最上面一行切换功能
  18. Scratch中的坐标系
  19. 广州市增城区2021-2022学年九年级第一学期期末考试英语试题
  20. 三坐标检测之工件检测选择合适测针

热门文章

  1. java中插入排序_Java中的插入排序
  2. c语言中isdigit函数_在C / C ++中使用isdigit()
  3. g++ -std=c++_在C ++ std库中使用sort()
  4. c+const_如何在C ++中使用const? 初学者指南
  5. c++枚举和c语言枚举_C语言枚举初学者指南
  6. C++进阶教程之信号处理
  7. 春运首日 广西桂林火车站向旅客“送万福”
  8. 【操作系统学习笔记】操作系统基础
  9. Linux学习总结(四)-两种模式修复系统,单用户,救援模式
  10. 发布一个练笔的 Android 阅读器,轻微仿91 Android 阅读器【后续将提供源码】