调用例子:FileUtils.downFile(request, response, filePath, "application/x-msdownload;");
FileUtils.downFile_2(request, response, filePath, "application/x-msdownload;");
/**
* 下载文件
*
* @param filePath
* 源文件路径
* @param contentType
* 文件类型
* @param request
* @param response
* @throws IOException
*/
public static void downFile(
HttpServletRequest request,
HttpServletResponse response,
String filePath,
String contentType) throws IOException
{
File file = new File(filePath);
if (file.exists()) {
String fileName = file.getName();
byte[] bytes = FileUtils.readFileToByteArray(file);
// response.setContentType("application/x-download");
response.setContentType(contentType);
String agent = request.getHeader("USER-AGENT");// 用户代理
// 防止中文文件名乱码
if (null != agent && -1 != agent.indexOf("MSIE")) {
String codedfilename = StringUtils.replace(URLEncoder.encode(fileName, "UTF-8"), "+", "%20");
response.setHeader("Content-Disposition", "attachment;filename=" + codedfilename);
} else if (null != agent && -1 != agent.indexOf("Mozilla")) {
String codedfilename = MimeUtility.encodeText(fileName, "UTF-8", "B");
response.setHeader("Content-Disposition", "attachment;filename=" + codedfilename);
} else {
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
}
response.setContentLength(bytes.length);
response.getOutputStream().write(bytes);
}
}
public static void downFile_2(
HttpServletRequest request,
HttpServletResponse response,
String filePath,
String contentType) throws IOException {
File file = new File(filePath);
if (file.exists()) {
String fileName = file.getName();
byte[] bytes = FileUtils.readFileToByteArray(file);
// response.setContentType("application/x-download");
response.setContentType(contentType);
String agent = request.getHeader("USER-AGENT");// 用户代理
// 防止中文文件名乱码
if (null != agent && -1 != agent.indexOf("MSIE")) {
String codedfilename = StringUtils.replace(URLEncoder.encode(fileName, "UTF-8"), "+", "%20");
response.setHeader("Content-Disposition", "attachment;filename=" + codedfilename);
}
// else if (null != agent && -1 != agent.indexOf("Mozilla")) {
// String codedfilename = MimeUtility.encodeText(fileName, "UTF-8", "B");
// response.setHeader("Content-Disposition", "attachment;filename=" + downFile_2);
// }
else {
fileName = new String(file.getName().getBytes(), "ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
}
response.setContentLength(bytes.length);
response.getOutputStream().write(bytes);
}
}
相关推荐
### Java实现文件下载并解决中文文件名乱码 在日常的Web开发中,经常会遇到需要让用户下载文件的需求,尤其是在企业级应用中。然而,在实际操作过程中可能会遇到一个常见问题:当文件名包含中文字符时,下载后的...
Java 生成 PDF 文件,解决中文乱码问题 Java 生成 PDF 文件,解决中文乱码问题是 Java 编程中常见的问题。解决这个问题的关键是正确地设置中文字体,以避免乱码问题。本文将通过一个完整的示例代码,详细讲解如何...
总结来说,处理Java中ZIP文件的中文乱码问题,关键在于明确指定字符集,通常是UTF-8,无论是使用Java内置的API还是第三方库。同时,理解文件系统的编码和压缩/解压过程中的字符编码转换也非常重要。通过这种方式,...
### Java导出Excel文件并下载到客户端(含解决中文乱码问题) 在现代的企业级应用开发中,数据导出功能是非常常见的一种需求。特别是在B/S架构的应用中,用户经常需要将查询结果导出为Excel文件以便进行后续的数据...
解决java压缩zip文件时的中文乱码问题 实现:java压缩文件成zip实现无乱码。 包括:写好的工具类与jar包。 使用方法:导入ant.jar包,调用CompressExcelOperate中的方法,即可实现压缩文件,并保证没有中文乱码...
多文件上传例子,彻底解决中文乱码问题了。总结中文乱码问题如下: 1、所有页面都用UTF-8。 2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 3、javascript脚本里用encodeURI(str)。 4、适当的时候,在...
本篇文章将详细探讨如何在Java中解析CSV文件,并解决中文乱码的问题。 首先,我们需要了解如何使用Java的标准库`java.io`和`java.nio`来读取CSV文件。最常用的是使用`BufferedReader`配合`Scanner`或者`Files.lines...
Java文件下载文件名乱码问题解决方案 Java 文件下载文件名乱码问题是指在下载 Java 文件时,文件名出现乱码现象,影响下载文件的正确性。这种问题通常有两种情况:一是下载时中文文件名乱码,二是下载时因为路径中...
往往开发环境和生产环境在环境部署时会遇到很多奇怪的问题,此次word文档下载就被卡住了,通过一番努力终于找到了原因,分享给大家。上传文件txt格式,内有方法详细的代码注释及原因说明,jar包比较常见,大家自行...
在Java编程中,读取包含中文字符的...通过理解和应用这些知识点,你可以有效地解决Java读取文件时出现的中文乱码问题。在实际开发中,对文件编码的理解和处理是至关重要的,能够确保程序正确地处理各种语言和字符集。
总之,这个名为"PDF2img"的DEMO利用PDFBox库解决了在Java环境中PDF转图片时中文乱码的问题,对于需要处理大量中文PDF文档的开发者来说,这是一个非常实用的工具。通过深入理解和使用PDFBox,我们可以构建更复杂的...
jsch-0.1.53 不支持修改编码格式,sftp.setFilenameEncoding("GBK");这样修改是不起作用的,所以必须修改源码。此处是修改源码后重新导出的jar包。
在Java应用中实现文件下载功能时,经常遇到的一个问题是输出文件名中的中文字符会出现乱码。这主要是因为HTTP协议在传输文件名时,默认使用的是ISO-8859-1编码,而中文字符在此编码下无法正确解析,从而导致乱码的...
以下是一些针对Java项目编译时中文乱码问题的解决方案。 1. **IDE设置** - **Eclipse**:在Eclipse中,可以右键点击项目 -> 属性 -> Resource,设置文本文件的编码为UTF-8。此外,也可以在项目根目录下创建一个名...
通过以上知识点的深入理解和应用,可以有效地解决“fckeditor(java版-解决中文附件名称乱码问题)”这个问题,确保用户能够正常上传并保存带有中文名称的附件,从而提高产品在中文环境下的可用性和用户体验。
### Java解决GET请求中文乱码问题详解 在Java Web开发中,经常遇到的一个问题是处理GET请求中的中文参数时出现乱码。这个问题主要是因为浏览器发送GET请求时,参数默认使用ISO-8859-1编码格式,而服务器端通常采用...
解决中文名乱码问题的关键在于确保数据传输的全过程都使用相同的字符编码,包括客户端的发送、服务器的接收以及响应。在Flex端,可以使用`flash.net.URLRequestHeader`设置请求头的`charset`属性,而在服务器端,如...
### 解决不同浏览器下载时中文名乱码问题 在Web开发过程中,经常遇到的一个问题是当用户尝试下载包含中文字符的文件名时,会出现乱码的情况。这是因为不同的浏览器处理文件名编码的方式有所不同,导致服务器端设置...
配置文件通常以`.properties`为扩展名,采用文本格式,每行包含一个键值对,键和值之间以等号(`=`)分隔,注释则以井号(`#`)开头。 Properties 类继承自 Hashtable,因此它拥有字典类的一些基本功能,如添加、删除、...
本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 首先,我们要明白乱码问题的根源。在文件的压缩和解压缩过程中,文件名通常被编码为字节序列,这个序列取决于原始文件名...