java下载乱码怎么解决_java下载文件出现乱码怎么解决
java下载文件出现乱码怎么解决
发布时间:2020-06-24 13:12:27
来源:亿速云
阅读:108
作者:Leah
这期内容当中的小编将会给大家带来有关java下载文件出现乱码的解决方法,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。String fileName = "下载的文件名"; String userAgent = request.getHeader("User-Agent");
//针对IE或者以IE为内核的浏览器:
if (userAgent.contains("MSIE")||userAgent.contains("Trident")) {
fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
} else {
//非IE浏览器的处理:
fileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
}
response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", fileName));
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setCharacterEncoding("UTF-8");
Java文件下载的几种方式public HttpServletResponse download(String path, HttpServletResponse response) {
try {
// path是指欲下载的文件的路径。
File file = new File(path);
// 取得文件名。
String filename = file.getName();
// 取得文件的后缀名。
String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();
// 以流的形式下载文件。
InputStream fis = new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
// 设置response的Header
response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
response.addHeader("Content-Length", "" + file.length());
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException ex) {
ex.printStackTrace();
}
return response;
}
public void downloadLocal(HttpServletResponse response) throws FileNotFoundException {
// 下载本地文件
String fileName = "Operator.doc".toString(); // 文件的默认保存名
// 读到流中
InputStream inStream = new FileInputStream("c:/Operator.doc");// 文件的存放路径
// 设置输出的格式
response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
// 循环取出流中的数据
byte[] b = new byte[100];
int len;
try {
while ((len = inStream.read(b)) > 0)
response.getOutputStream().write(b, 0, len);
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void downloadNet(HttpServletResponse response) throws MalformedURLException {
// 下载网络文件
int bytesum = 0;
int byteread = 0;
URL url = new URL("windine.blogdriver.com/logo.gif");
try {
URLConnection conn = url.openConnection();
InputStream inStream = conn.getInputStream();
FileOutputStream fs = new FileOutputStream("c:/abc.gif");
byte[] buffer = new byte[1204];
int length;
while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread;
System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
支持在线打开文件的一种方式public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {
File f = new File(filePath);
if (!f.exists()) {
response.sendError(404, "File not found!");
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[1024];
int len = 0;
response.reset(); // 非常重要
if (isOnLine) { // 在线打开方式
URL u = new URL("file:///" + filePath);
response.setContentType(u.openConnection().getContentType());
response.setHeader("Content-Disposition", "inline; filename=" + f.getName());
// 文件名应该编码成UTF-8
} else { // 纯下载方式
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());
}
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0)
out.write(buf, 0, len);
br.close();
out.close();
}
上述就是小编为大家分享的java下载文件出现乱码的解决方法了,如果您也有类似的疑惑,不妨碍参照上述分析进行理解。如果想了解更多相关内容,请关注亿速云行业资讯。
java下载乱码怎么解决_java下载文件出现乱码怎么解决相关推荐
- java 读写文件乱码_Java 解决读写本地文件中文乱码的问题
Java 解决读写本地文件中文乱码的问题 前言: 在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码.原因其实很简单,就是系统的编码和程序的编码采用了不同的编码格式.通 ...
- A. 解决运行php文件出现乱码的问题
A. 解决运行php文件出现乱码的问题 参考文章: (1)A. 解决运行php文件出现乱码的问题 (2)https://www.cnblogs.com/youyuanjuyou/p/8099728.h ...
- java 数据写入txt乱码_java写入文件是乱码
java写入文件是乱码 我们读取.写入文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题.首先,明确一点,文本文件与二进制文件的概念与差异. ...
- java 只有日期的类_JAVA日期和时间类彻底解决(1)[转]
What's your time zone? JAVA日期和时间类彻底解决(1)Page 1 of 3 你是否在苦苦挣扎在JAVA语言中的日期和时间中?当你在计算机上显示日期和时间时,, 是否要快一个 ...
- Python爬虫笔记——解决python 写入文件中文乱码问题
原链接: python 爬虫写入文件中文乱码问题解决 分析过程 根据网上的一些建议,将文件的打开编码改为 utf-8 ,结果跟本不起作用 奇怪的是用notepad 打开 csv 文件竟然显示正常,看来 ...
- 解决打开csv文件中文乱码
一. 问题背景 公司给的csv文件,用excel打开,里面的中文乱码了. 二. 解决方案 2.1 方案一 如果只需查看数据,那么使用nopad++打开即可,或者Vscode. 2.2 方案二 如果需要 ...
- Mac 解决打开txt文件中文乱码(楼主亲测有效)
在mac系统中打开txt文件会出现中文乱码 TextEdit软件 打开TextEdit软件,进入Preferences 进入Open and Save页签 选择Plain Text File Enco ...
- html文件怎么在wps打开是乱码,wps上打开Excel文件是乱码
按说WPS可以兼容OFFICE的Word和Excel以及PPT软件的,怎么可能乱码呢.一般乱码的情况,肯定是文档的编码错误,也有可能是软件版本的问题. 我在电脑上新建了一个Excel表格,我发给了他, ...
- java 看书浏览器官_JAVA读取文件流,设置浏览器下载或直接预览操作
最近项目需要在浏览器中通过url预览图片.但发现浏览器始终默认下载,而不是预览.研究了一下,发现了问题: // 设置response的header,注意这句,如果开启,默认浏览器会进行下载操作,如果注 ...
最新文章
- PHP数组实际占用内存大小的分析
- 基于WINCE6.0+S3C2443的camera驱动
- 数据中心机房谐波治理
- CentOS 8 成为绝版!到底发生了什么?
- Linux-重装系统之nginx+php+mysql
- php 自动验证 正则表达,使用正则表达式验证登录页面的输入内容
- hive中的数据库与mysql中的hive数据库的关系
- 为jupyter_notebook增加目录
- 计算机本地连接怎么找不到了,网络,本地连接不见了解决办法
- JAVA高并发的三种实现
- 一个好的桌面图标的网站
- XSS跨站点脚本攻击解决方案
- mysql 驱动指令_Mysql的驱动包如何发送指令给MYSQL SERVER
- java方法重载的好处_Java方法重载浅谈
- MUI框架-01-介绍-准备-创建项目
- quill光标位置插入html,quill编辑器+word文档上传,插入指定位置
- python绘制横向柱状图 妈妈再也不用担心我不会画图了
- 那种屏幕监控软件适合管理你现在的企业?
- ubuntu如何调整屏幕亮度
- 中国在50个新兴市场物流业排行榜上独占鳌头
热门文章
- 胶片色调,利用LR和PS调清新的胶片…
- 二进制补码转换为十进制数的方法(数学层面)
- 抖音记事本代码html,抖音表白程序制作教程 抖音表白代码制作分享-记事本文件...
- pcb布线拐角处打地孔_PCB上的走线到底能不能走90°拐角?这是一个值得关注的问题...
- SIP Inspector测试语音
- 大数据的产生背景和发展历史
- IP-Guard自动加解密文件夹支持多目录使用说明
- WIN10一分钟自动锁屏
- android 时间戳 转日期格式,Android 时间戳和日期之间的转化
- MTK Android