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下载文件出现乱码怎么解决相关推荐

  1. java 读写文件乱码_Java 解决读写本地文件中文乱码的问题

    Java 解决读写本地文件中文乱码的问题 前言: 在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码.原因其实很简单,就是系统的编码和程序的编码采用了不同的编码格式.通 ...

  2. A. 解决运行php文件出现乱码的问题

    A. 解决运行php文件出现乱码的问题 参考文章: (1)A. 解决运行php文件出现乱码的问题 (2)https://www.cnblogs.com/youyuanjuyou/p/8099728.h ...

  3. java 数据写入txt乱码_java写入文件是乱码

    java写入文件是乱码 我们读取.写入文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题.首先,明确一点,文本文件与二进制文件的概念与差异. ...

  4. java 只有日期的类_JAVA日期和时间类彻底解决(1)[转]

    What's your time zone? JAVA日期和时间类彻底解决(1)Page 1 of 3 你是否在苦苦挣扎在JAVA语言中的日期和时间中?当你在计算机上显示日期和时间时,, 是否要快一个 ...

  5. Python爬虫笔记——解决python 写入文件中文乱码问题

    原链接: python 爬虫写入文件中文乱码问题解决 分析过程 根据网上的一些建议,将文件的打开编码改为 utf-8 ,结果跟本不起作用 奇怪的是用notepad 打开 csv 文件竟然显示正常,看来 ...

  6. 解决打开csv文件中文乱码

    一. 问题背景 公司给的csv文件,用excel打开,里面的中文乱码了. 二. 解决方案 2.1 方案一 如果只需查看数据,那么使用nopad++打开即可,或者Vscode. 2.2 方案二 如果需要 ...

  7. Mac 解决打开txt文件中文乱码(楼主亲测有效)

    在mac系统中打开txt文件会出现中文乱码 TextEdit软件 打开TextEdit软件,进入Preferences 进入Open and Save页签 选择Plain Text File Enco ...

  8. html文件怎么在wps打开是乱码,wps上打开Excel文件是乱码

    按说WPS可以兼容OFFICE的Word和Excel以及PPT软件的,怎么可能乱码呢.一般乱码的情况,肯定是文档的编码错误,也有可能是软件版本的问题. 我在电脑上新建了一个Excel表格,我发给了他, ...

  9. java 看书浏览器官_JAVA读取文件流,设置浏览器下载或直接预览操作

    最近项目需要在浏览器中通过url预览图片.但发现浏览器始终默认下载,而不是预览.研究了一下,发现了问题: // 设置response的header,注意这句,如果开启,默认浏览器会进行下载操作,如果注 ...

最新文章

  1. PHP数组实际占用内存大小的分析
  2. 基于WINCE6.0+S3C2443的camera驱动
  3. 数据中心机房谐波治理
  4. CentOS 8 成为绝版!到底发生了什么?
  5. Linux-重装系统之nginx+php+mysql
  6. php 自动验证 正则表达,使用正则表达式验证登录页面的输入内容
  7. hive中的数据库与mysql中的hive数据库的关系
  8. 为jupyter_notebook增加目录
  9. 计算机本地连接怎么找不到了,网络,本地连接不见了解决办法
  10. JAVA高并发的三种实现
  11. 一个好的桌面图标的网站
  12. XSS跨站点脚本攻击解决方案
  13. mysql 驱动指令_Mysql的驱动包如何发送指令给MYSQL SERVER
  14. java方法重载的好处_Java方法重载浅谈
  15. MUI框架-01-介绍-准备-创建项目
  16. quill光标位置插入html,quill编辑器+word文档上传,插入指定位置
  17. python绘制横向柱状图 妈妈再也不用担心我不会画图了
  18. 那种屏幕监控软件适合管理你现在的企业?
  19. ubuntu如何调整屏幕亮度
  20. 中国在50个新兴市场物流业排行榜上独占鳌头

热门文章

  1. 胶片色调,利用LR和PS调清新的胶片…
  2. 二进制补码转换为十进制数的方法(数学层面)
  3. 抖音记事本代码html,抖音表白程序制作教程 抖音表白代码制作分享-记事本文件...
  4. pcb布线拐角处打地孔_PCB上的走线到底能不能走90°拐角?这是一个值得关注的问题...
  5. SIP Inspector测试语音
  6. 大数据的产生背景和发展历史
  7. IP-Guard自动加解密文件夹支持多目录使用说明
  8. WIN10一分钟自动锁屏
  9. android 时间戳 转日期格式,Android 时间戳和日期之间的转化
  10. MTK Android