java文件下载至linux乱码,JAVA 文件下载乱码问题解决办法
页面设置隐藏的iframe
页面下载按钮
id="btnDown" href="javascript:void(download('btnDown'))" >下载模板
页面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();
};
}
paip.java swt 乱码问题解决
paip.java swt 乱码问题解决 看累挂,Dfile.encoding是gbk的.. 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专 ...
ASP+Access UTF-8 网页乱码问题解决办法
用ACCESS数据库和ASP做网站时用UTF-8编码有时会出现乱码,再者网页出错或者刷新页面后就是乱码,如果数据库取值乱码在开头加上
openerp 7.0邮件接收中文附件乱码问题解决办法
openerp 7.0邮件接收中文附件乱码问题解决办法: 修改文件\addons\mail\mail_thread.py #1064 line插入代码: h=email.Header.Header(n ...
关于jFinal开发中遇到的中文乱码问题解决办法
关于jFinal开发中遇到的中文乱码问题解决办法 设置tomcat的编码,修改
node-canvas
1.使用之前需要预先安装 Cairo 本人安装遇到各种各样的坑,可以参考这里来填坑:https://github.com/Automattic/node-canvas/wiki/Installati ...
【转】 SED多行模式空间
1. sed执行模板=sed '模式{命令1;命令2}' 即逐行读入模式空间,执行命令,最后输出打印出来 2. 为方便下面,先说下p和P,p打印当前模式空间内容,追加到默认输出之后,P打印当前模式空间 ...
LSM
1.MySQL存储引擎: B+树 https://blog.csdn.net/qq_26222859/article/details/80631121 2.HBase LSM树 核心:将对数据的修改增 ...
[原]关于helios自定义面板简述
想研究一下helios和自己仿真软件的适配,于是找了一下关于helios的使用 首先关于helios的使用有一个“vr2009”的发帖者有过很详细描述: http://www.insky.cn/bbs ...
HTML Tags
While some tags have a very specific purpose, such as image and video tags, most tags are used to de ...
重整ADO.NET连接池相关资料
https://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection.connectionstring(VS.80) ...
ural Ambitious Experiment 树状数组
During several decades, scientists from planet Nibiru are working to create an engine that would all ...
java文件下载至linux乱码,JAVA 文件下载乱码问题解决办法相关推荐
- Linux java集成安装环境,Linux下Java环境安装
本节主要讲解Linux(Centos 6.5)下Java环境的安装 1. 卸载机器上默认安装的JDK 在Linux环境下一般会默认安装jdk,为了自己项目的开发部署,一般情况要重新装jdk,而且自己装 ...
- 在linux怎样运行java,怎么在linux运行java
怎么在linux运行java [2021-02-01 00:44:14] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...
- java jcsh执行linux命令,java jcsh执行linux命令
java jcsh执行linux命令 [2021-02-03 01:26:29] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&q ...
- linux看java堆大小,linux 改java堆内存大小
linux 改java堆内存大小 [2021-02-08 23:06:29] 简介: linux查内存大小的方法:首先打开应用程序:然后选择系统工具选项,并单击系统终端选项:接着在系统终端命令行输入 ...
- linux如何看java安装路径,linux查看java的安装路径
linux查看java的安装路径 [2021-02-05 21:28:47] 简介: 服务器 一.查看软件安装路径: Linux软件安装的地方不止一个地方,先说查看软件安装的所有路径(地址). 这里 ...
- 怎么看linux Java版本,查看linux的java版本信息
查看linux的java版本信息 [2021-02-10 01:02:40] 简介: linux系统查看jdk版本的方法是:可以通过[java -version]命令来查看.具体方法是:1.打开终端 ...
- 如何查看Linux的java版本,查看linux的java版本信息
查看linux的java版本信息 [2021-02-10 01:02:40] 简介: linux系统查看jdk版本的方法是:可以通过[java -version]命令来查看.具体方法是:1.打开终端 ...
- java线程和linux线程,Java线程与Linux内核线程的映射关系
Linux从内核2.6开始使用NPTL (Native POSIX Thread Library)支持,但这时线程本质上仍是轻量级进程(LWP). Java里的线程是由JVM来管理的,它如何对应到操做 ...
- 普通java跑到linux上,JAVA在linux下open too many files
Too many open files问题出现有两种情况:一种是在搜索的时候出现,多半是由于索引创建完毕之后被移动过,如果创建索引的时候不出现该错误,搜索的时候也一般是不会出现的.如果出现了,有两种处 ...
- java跑到linux上,Java程序在Linux上运行虚拟内存耗用很大
突然集群的2个节点挂了,通过top查看, 虚拟内存22G, 通过 pmap -x 8 | grep anon 一大堆64M Linux下glibc的内存管理机制用了一个很奇妙的东西,叫arena.在g ...
最新文章
- boolean searching, it is so important for searching your papers
- 20155313 2016-2017-2 《Java程序设计》第三周学习总结
- MEF初体验之九:部件生命周期
- 施一公的三位杰出女弟子
- 微课|Python三种方法统计各分数段内的人数(17分钟)
- 《AlwaysRun!》第五次作业:项目需求分析改进与系统设计
- SpringCloud 应用在 Kubernetes 上的最佳实践(一):开发篇 | 凌云时刻
- 如何查看谷歌卫星地图每级分辨率的两种方法
- 判断一个正整数是素数还是合数
- 谁是 GameFi 3 月最大的赢家| March Monthly Report
- Python代码格式化工具autopep8安装及使用极简版
- Simon‘s writting 全网最全笔记
- 浏览器打印功能print.js
- 应该怎样学习Unity3D
- 采访ClickHouse 布道者郭炜
- 通达信头肩底形态选股公式,突破波峰发出信号
- CSDN 专栏的创建与管理
- windows server 2003安装SP2补丁出现密钥无效的解决方法
- 深度解读新档案法①:企业如何提高档案管理规范性?
- 计算机专业 教育部学科排名(你们要的排名来了!)
热门文章
- STM32与宇电设备实现AI-BUS通讯
- 最优化学习笔记(五)牛顿法及拟牛顿法
- [前台]---input标签中的hidden,浏览器差异问题
- 个人或结对项目 - 动态显示程序运算的过程
- IOC操作Bean管理XML方式(注入外部bean)
- JAVA入门级教学之(do...while循环)
- 红包指定分配金额php,php仿微信红包分配算法的实现方法_PHP
- python分析股票数据_Python数据可视化——股票数据分析
- bootstrap table格式化字符串_你要的PHP字符串处理函数都在这了!
- python 代理服务器_Python实现HTTP代理服务器