Java web下载文件功能的确很简单。如下代码片段
String fileName ="....";
response.setHeader("Content-disposition","attachment; filename="+fileName);
//response.setContentType("application/ms-word");
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(getServletContext().getRealPath("" + fileName)));
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff,0,bytesRead);
}
} catch(final IOException e) {
System.out.println ( "IOException." + e );
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
如上所示,已经可以完成下载的功能。不过如果我们使用中文文件名,那么这段代码便会出错,解决办法有多种方式,如下:
第一种: 设置 response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));这里将文件名编码成UTF-8的格式,就不会出现URL出错了。IE6下注意中文文字不能超过超过17个。
第二种:设置response.setHeader( "Content-Disposition", "attachment;filename=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" ) );将中文名编码为ISO8859-1的方式。不过该编码只支持简体中文.
按照上诉方式,可以综合一下两种方式解决绝大部分中文问题。
fileName = URLEncoder.encode(fileNameSrc,"UTF-8");
if(fileName.length()>150)//解决IE 6.0 bug
fileName=new String(fileNameSrc.getBytes("GBK"),"ISO-8859-1");
response.setHeader( "Content-Disposition", "attachment;filename=" + fileName);
分享到:
相关推荐
### Java实现文件下载并解决中文文件名乱码 在日常的Web开发中,经常会遇到需要让用户下载文件的需求,尤其是在企业级应用中。然而,在实际操作过程中可能会遇到一个常见问题:当文件名包含中文字符时,下载后的...
在进行性能测试或功能测试时,Apache JMeter是一款非常受欢迎的开源工具,尤其在Web应用测试领域。然而,当涉及到上传包含中文文件名的文件时,可能会遇到乱码问题。这个问题在JMeter的早期版本中尤为突出,比如在...
在Java Web开发中,JSP(JavaServer Pages)经常用于构建动态网页,其中包括处理文件下载的需求。然而,当涉及到中文文件名时,可能会遇到乱码问题。本文将深入解析如何在JSP中实现文件下载,并解决中文文件名乱码的...
在IT领域,特别是Web开发中,处理文件下载时遇到文件名乱码问题是一个常见的挑战,尤其是在不同的服务器环境下,如WeLogic与Tomcat之间的差异。本文将深入探讨在WeLogic服务器中使用Struts2框架进行文件下载时遇到的...
在Java编程中,遇到“java下载时文件名乱码”的问题通常是由于编码不一致或处理不当造成的。在处理文件下载时,尤其是从Web服务器下载带有非ASCII字符的文件名时,这种问题尤为常见。让我们深入探讨这个问题,并提供...
本文将详细介绍如何在Java中处理导出文件时的文件名问题,确保用户能够正常下载带有中文或其他特殊字符的文件名。 #### 知识点一:理解文件名编码问题 在Web应用中,当服务器向客户端发送文件时,HTTP协议中会包含...
在Java Web开发中,文件下载是一项常见的功能,尤其在企业级应用中不可或缺。当用户需要获取服务器上的资源,如文档、图片或者视频等,通常会通过点击下载链接触发服务器进行文件传输。本项目针对的一个重要问题就是...
在处理Web应用中的文件下载功能时,经常遇到的问题之一就是文件名出现乱码,尤其是当文件名包含中文字符时。为了解决这一问题,本文将详细介绍如何通过Java Servlet技术中的response.setHeader()方法来设置正确的...
在Java编程中,文件下载是常见的任务之一,特别...通过以上步骤,你可以实现一个基本的Java文件下载功能,并解决中文文件名乱码的问题。对于更复杂的应用场景,如大文件分块下载、断点续传等,还需要进一步优化和扩展。
以上步骤完成后,Struts2应该能正确处理包含中文文件名的上传和下载操作,避免乱码问题。不过,需要注意的是,不同的服务器环境、浏览器版本或客户端设置可能会影响到文件名编码的处理,因此在实际应用中可能还需要...
Java Web实现文件下载和乱码处理是Web应用开发中的常见任务。本文将详细介绍如何在Java Web环境下处理这两个问题。文件下载通常涉及从服务器检索文件并将其传输到客户端,而乱码问题则涉及到字符编码的正确处理,以...
- **乱码问题**:Cookie中可能会出现乱码问题,尤其是当Cookie中包含中文字符时。 ##### 4.3 JSP常见错误 - **WEB-INF目录下不应放置静态资源文件**:如HTML、JSP等,这些文件应放在应用的WebContent目录下。 - **...
在IT行业中,文件管理和下载是常见的操作,尤其是在处理包含中文字符的文件时,可能会遇到乱码问题。本文将深入探讨“文件下载”以及如何解决文件名中文乱码问题,这在处理多语言环境下的数据交流时显得尤为重要。 ...
标题中的“jspSmartUpload上传中文文件名乱码问题”是一个常见的技术挑战,特别是在处理Web应用程序时,特别是那些涉及用户上传文件的场景。JSP Smart Upload是早期流行的一个用于Java Web应用的文件上传组件,它...
在“struts2 中文文件名文件下载”的场景中,我们需要关注的是如何在Struts2框架下正确处理包含中文字符的文件名。首先,我们要理解文件名编码ISO8859-1,这是一个西欧字符编码标准,不支持中文字符。在处理中文...
3. **文件上传/下载乱码**:文件名中含有中文时,如果不处理文件名的编码,可能导致文件名显示乱码。 4. **数据库存储乱码**:数据库字段定义的字符集与应用程序中设置的编码不一致,写入数据库的中文数据可能出现...
3. **文件上传下载**:在处理包含中文文件名的上传或下载时,文件名的编码问题也需要注意,因为文件名可能以不同的编码存储在服务器上。 4. **数据库操作**:在数据库中存储和读取中文数据时,数据库连接的字符集...
因此,解决中文文件名乱码问题对于提升Web应用的质量至关重要。 #### 二、乱码原因分析 文件名出现乱码的根本原因在于编码格式不一致。当服务器端设置的文件名编码格式与客户端浏览器期望的编码格式不符时,就会...