`
long5534
  • 浏览: 53153 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

文件下载(解决中文文件名下载乱码问题)(二)

阅读更多
针对“文件下载(解决中文文件名下载乱码问题)”出现的问题:在弹出的文件下载框选择“打开”不能正常打开文件。
下面的代码可解决此问题:
java 代码
  1. <%@ page contentType="text/html;charset=utf-8" %>       
  2. <%@ page import = "java.util.*" %>       
  3. <%@ page import = "java.io.*" %>       
  4. <%@ page import = "java.net.*" %>       
  5. <%       
  6. //防止IE缓存       
  7. response.setHeader("pragma","no-cache");       
  8. response.setHeader("cache-control","no-cache");       
  9. response.setDateHeader("Expires",0);       
  10. //设置编码       
  11. request.setCharacterEncoding("UTF-8");       
  12.       
  13. String fileName = request.getParameter("fileName");       
  14. //取到文件       
  15. File file = new File(application.getRealPath("/")+"upload/" + fileName);       
  16. response.reset();       
  17. //response.setContentType("application/octet-stream;charset=UTF-8");    
  18. response.setContentType("application/octet-stream;charset=GBK");//解决在弹出文件下载框不能打开文件的问题   
  19. //System.out.println(response.getCharacterEncoding());       
  20. //一定要对fileName进行encode       
  21. //response.addHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));    
  22. response.addHeader("Content-Disposition""attachment; filename=" + new String(fileName.getBytes("GBK"),"ISO8859-1"));//解决在弹出文件下载框不能打开文件的问题   
  23. response.setContentLength((int) file.length());       
  24.       
  25. byte[] buffer = new byte[4096];       
  26. BufferedOutputStream output = null;       
  27. BufferedInputStream input = null;       
  28.       
  29. // 写缓冲区:       
  30. try {       
  31.     output = new BufferedOutputStream(response.getOutputStream());       
  32.     input = new BufferedInputStream(new FileInputStream(file));       
  33.       
  34.     int n = (-1);       
  35.     while ((n = input.read(buffer, 04096)) > -1) {       
  36.         output.write(buffer, 0, n);       
  37.     }       
  38.     response.flushBuffer();       
  39. }       
  40. catch (Exception e) {       
  41. // maybe user cancelled download       
  42. finally {       
  43.     if (input != null) input.close();       
  44.     if (output != null) output.close();       
  45. }       
  46. %>   
分享到:
评论
1 楼 pizza823 2010-08-19  
文件下载名虽然不是乱码了,但是文件内容为乱码??
而且下载时会有空格截断问题,如何解决

相关推荐

    Java实现文件下载并解决中文文件名乱码

    本文将详细介绍如何使用Java实现文件下载功能,并重点讲解如何解决中文文件名乱码的问题。 #### 一、基本原理与步骤 1. **读取文件**:首先需要将要下载的文件读取到内存中。 2. **设置响应头**:为了正确地告知...

    彻底解决Asp.net 文件下载时文件名的中文乱码和空格异常全球性技术难题

    彻底解决Asp.net 文件下载时文件名的中文乱码和空格异常全球性技术难题 本文用 C# 代码解决了在目前四种流行浏览器中Asp.net 输出文件流时文件名的空格及中文字符乱码这两个问题。使用本文的代码,你将可以让 IE...

    jsp实现文件下载与中文文件名乱码问题解决

    本文将深入解析如何在JSP中实现文件下载,并解决中文文件名乱码的问题。 首先,我们需要了解HTTP协议在处理文件下载时的角色。当用户请求下载一个文件时,服务器需要设置响应头来指示浏览器如何处理这个响应。在JSP...

    文件下载response.setHeader()下载中文文件名乱码问题解决办法.pdf

    文件下载response.setHeader()下载中文文件名乱码问题解决办法 本文主要讨论了文件下载时response.setHeader()下载中文文件名乱码问题的解决办法。该问题是由于 HTTP 消息头中的 Content-Disposition 头字段不正确...

    文件下载,二进制流转换成文件 解决中文名乱码的问题

    在IT领域,尤其是在Web开发中,处理文件下载和解决中文文件名乱码问题是常见的需求之一。本文将深入探讨如何通过二进制流转换为文件来实现文件下载,并着重讲解如何解决中文文件名出现的乱码问题。 ### 文件下载...

    ASP.NET 解决下载文件名乱码问题

    解决ASP.NET中文件下载时的文件名乱码问题,关键在于确保服务器端和客户端的编码一致性。通过使用`HttpUtility.UrlEncode`、`Server.UrlEncode`等方法,可以有效地处理各种情况下的文件名乱码。此外,动态修改URL也...

    【文件下载】及解决文件名中文乱码问题

    总的来说,解决中文文件名乱码问题需要从多个角度考虑,包括服务器配置、HTTP头部设置、编码转换以及选择合适的工具。了解并掌握这些知识点,有助于我们在实际工作中更顺畅地处理各种语言环境下的文件下载问题。对于...

    解决JMeter上传包含中文文件名乱码ApacheJMeter_http.jar

    总之,解决JMeter上传中文文件名乱码问题需要对JMeter的源代码有深入的理解,并能针对性地进行修改。通过确保正确处理文件名的编码,我们可以避免在测试过程中遇到的乱码困扰,从而提高测试的准确性和效率。

    zip库(解决文件名中文乱码问题).zip

    总之,"zip库(解决文件名中文乱码问题).zip" 是一个专门为C++开发的、修复了中文文件名乱码问题的ZIP操作库。它提供了方便的API接口,使得开发者能够在处理中文文件名时更加得心应手,避免了编码转换带来的困扰。...

    Linux下中文文件名乱码问题的详解 - CSDN博客1

    总结来说,解决Linux下中文文件名乱码问题的关键在于: 1. 确保Linux系统支持中文编码,如GBK和UTF-8。 2. 在处理文件名时进行适当的编码转换,特别是在跨平台操作时。 3. 如果在编程中处理文件名,可能需要编写或...

    解决浏览器请求响应中文文件名乱码问题的小工具包,解决中文文件名问题

    首先,我们需要理解问题的核心:浏览器在请求服务器上的资源,特别是文件时,如果文件名包含中文字符,可能会因为编码不一致导致乱码。这主要涉及到字符编码的两个关键概念——Unicode和字符编码转换。 1. **...

    详解关于java文件下载文件名乱码问题解决方案

    Java文件下载文件名乱码问题解决方案 Java 文件下载文件名乱码问题是指在下载 Java 文件时,文件名出现乱码现象,影响下载文件的正确性。这种问题通常有两种情况:一是下载时中文文件名乱码,二是下载时因为路径中...

    jsch-0.1.53 使用sftp协议上传下载文件名中文乱码解决办法

    jsch-0.1.53 不支持修改编码格式,sftp.setFilenameEncoding("GBK");这样修改是不起作用的,所以必须修改源码。此处是修改源码后重新导出的jar包。

    jsch文件名中文乱码解决办法

    感谢你的下载,文件说明如下: *jsch的源文件 *jsch的依赖包 *用jsch源文件及依赖包构建的项目,便于修改其源码* ...如果乱码问题依然没解决,这个类也许能帮你找到你需要更改的编码类型。然后修改那三处地方。

    Java应用下载文件功能,输出文件名中的中文乱码

    在Java应用中实现文件下载功能时,经常遇到的一个问题是输出文件名中的中文字符会出现乱码。这主要是因为HTTP协议在传输文件名时,默认使用的是ISO-8859-1编码,而中文字符在此编码下无法正确解析,从而导致乱码的...

    部署到linux服务器文件名乱码问题

    ### 部署到Linux服务器文件名乱码问题解析与解决 #### 一、问题背景与现象 在项目部署过程中,特别是在门户系统APP升级时,遇到了一个常见的问题:文件名乱码。具体表现为,在将文件从Linux服务器下载到Windows...

    多文件上传例子(解决中文乱码)

    多文件上传例子,彻底解决中文乱码问题了。总结中文乱码问题如下: 1、所有页面都用UTF-8。 2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 3、javascript脚本里用encodeURI(str)。 4、适当的时候,在...

Global site tag (gtag.js) - Google Analytics