`
pharaohsprince
  • 浏览: 296827 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

彻底解决中文名文件下载和下载文件内容乱码问题!!!!!

阅读更多

之前,写过一个Download.jsp文件,可以解决下载文件乱码问题(诸如:DOC,XSL文件等等).
后来发现,遇到中文名的文件的时候,文件下载将会报错~~~~
今天,通过改写原Download.jsp文件已经彻底解决了这个问题~
现在,把一整套的文件上传下载的方法给贴出来~~~以便大家借鉴!~!~!~!~! 
作者:古埃及法老
-------------------------------------------------------------------------------------------------------------------
测试环境:WEBLOGIC 8.1,WIN XP SP4,IE 6.0
-----------------------------------------------------
文件上传:
-----------------------------------------
准备工作:导入著名的SmartUpload.jar组件包
upload.jsp文件
---------------------------------------------------------
<%@ page contentType="text/html; charset=gb2312" %>
<%
 request.setCharacterEncoding("gb2312"); // 这句话很重要,否则遇到中文就出错~
%>
<HTML><HEAD><TITLE>上传</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
</HEAD>
<BODY leftMargin=0 topMargin=0>
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#DEE7EF">
  <tr>
    <td align="center">
      <FORM action="upload_ok.jsp" method=post name="Upload" enctype="multipart/form-data">
        <br>
        请输入附件文件的所在路径<FONT color=red> * </FONT>为必填项目<br>
        <br>
        <TABLE width="317" border=0 cellPadding=0>
          <TBODY>
            <TR>
              <TD align=right vAlign=center nowrap>附件路径:</TD>
              <TD><input type="file" name="file" style="border: 1px #FFFFFF solid;background:#efefef" > <FONT color=red>*</FONT></TD>
            </TR>
            <TR align="center">
              <TD height=60 colspan="2" vAlign=center nowrap> <INPUT style="height:22px" name=B1 type=submit value=" 确 定 " >
<INPUT style="height:22px" name=B2 type=reset value=" 取 消 " >
              </TD>
            </TR>
          </TBODY>
        </TABLE>
      </FORM>
</td>
  </tr>
</table>
</BODY></HTML>
---------------------------------------------------------
upload_ok.jsp文件
---------------------------------------------------------
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="com.jspsmart.upload.*" %>
<HTML><HEAD><TITLE>上传成功!</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
</HEAD>
<BODY leftMargin=0 topMargin=0>
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
<table width="80%"  border="0" cellpadding="0" cellspacing="0" bgcolor="#DEE7EF">
  <tr>
    <td align="center">
<% 
 int count=0;
 String fileName = null;
 mySmartUpload.initialize(pageContext); 
 mySmartUpload.upload();
 com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
 if (!myFile.isMissing()) {
  //String ext=myFile.getFileExt();//得到后缀   
  fileName = myFile.getFileName();
            myFile.saveAs("/files/" + fileName);//你要存放文件所在文件夹的相对路径
     out.println("文件:<b>"+fileName+"</b>上传成功!<br>文件大小:" + myFile.getSize() + "kb<BR>");
     }
%>
</BODY></HTML>
---------------------------------------------------------

文件下载:
-----------------------------------------
文件的超连接写法范例:
<% String fname ="中文测试.xsl"; //假设你的文件名是:中文测试.xsl
%>
<A target="_blank" href="Download.jsp?filename=<%=fname%>">下 载</A>
文件的超连接写法范例-2 重新用utf-8对文件名编码:
<%@ page contentType="text/html;charset=gb2312" session="true"%>
<%  String name=java.net.URLEncoder.encode("世界文化.doc","UTF-8"));%>  <a href="c:\<%=name%>">世界文化.doc</a>

Download.jsp文件
---------------------------------------------------------
<%
  java.io.BufferedInputStream bis=null;
  java.io.BufferedOutputStream  bos=null;
try{
 String filename=request.getParameter("filename");
             filename=new String(filename.getBytes("iso8859-1"),"gb2312");
 response.setContentType("application/x-msdownload");
 response.setHeader("Content-disposition","attachment; filename="+new String(filename.getBytes("gb2312"),"iso8859-1"));
 bis =new java.io.BufferedInputStream(new java.io.FileInputStream(config.getServletContext().getRealPath("files/" + filename)));
 bos=new java.io.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(Exception e){
 e.printStackTrace();
}
finally {
 if (bis != null)bis.close();
 if (bos != null)bos.close();
}
%> 

---------------------------------------------------------



分享到:
评论

相关推荐

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

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

    彻底解决android读取中文txt的乱码(自动判断文档类型并转码

    在Android平台上,开发人员经常遇到一个棘手的问题,那就是如何正确地读取包含中文字符的TXT文件,因为不恰当的处理往往会导致乱码。本文将深入探讨如何彻底解决这一问题,包括自动判断文档编码类型以及进行转码操作...

    使用过滤器解决中文乱码问题

    ### 使用过滤器解决中文乱码问题 在Web开发过程中,经常遇到的一个问题是中文或其它非ASCII字符的乱码问题。这种现象通常出现在浏览器接收的数据与实际编码格式不匹配时。解决此类问题的一种常见方法是使用过滤器...

    eclipse中JS中文乱码解决

    ### Eclipse中JS中文乱码解决办法 在使用Eclipse进行Web开发时,有时会遇到JavaScript文件中的中文出现乱码的情况,...此外,对于已经存在的乱码文件,可能还需要手动更改其编码后再按照上述步骤操作,才能解决问题。

    Sybase安装步骤及中文乱码解决办法

    Sybase安装步骤及中文乱码解决办法 在今天的信息时代,数据库管理系统...本文提供的Sybase安装步骤及中文乱码解决办法可以帮助用户快速、正确地安装Sybase数据库,并解决中文乱码问题,从而提高数据库管理效率和性能。

    彻底解决fckeditor(jsp版)上传中文图片乱码问题

    彻底解决fckeditor(jsp版)上传中文图片乱码问题,我这里用的编码是utf-8的,这里用的fckeditor 是2.6的,fckeditor.java包是2.3的,经过我修改ConnectorServlet.java和SimpleUploaderServlet.java两个文件,重新生成...

    详解多种方法解决MYSQ中文乱码

    本方法着重于通过修改MySQL的配置文件以及数据库连接字符串来解决问题,适合于更长期稳定的解决方案。 ##### 配置文件调整 1. **修改`my.ini`或`my.cnf`**:这些文件位于MySQL安装目录中,需要根据实际情况调整...

    彻底解决PowerDesigner反向工程Oralce备注不是中文问题

    配置方法: 替换DBMS配置文件 位置:\Sybase\PowerDesigner 12\Resource Files\DBMS\oracl10g.xdb 完成后执行反向工程即可,反向工程的时候DBMS选择Oracle version 10g就可以了

    Struts2乱码终极解决办法

    本文将详细介绍如何彻底解决Struts2中的乱码问题,并提供实际可行的解决方案。 #### 二、乱码产生的原因 在Struts2框架中,中文乱码主要由以下几个方面的原因造成: 1. **请求编码问题**:客户端发送请求时未指定...

    PHP输出中文乱码问题.docx

    * 使用 mbstring 扩展来解决中文乱码问题 * 使用 `mb_subst` 函数代替 `substr` 函数 * 使用 `iconv` 函数将编码转换成操作系统识别的编码 * 生成一个只有字母和数字的序列作为文件名,而将原来带有中文的名字保存在...

    关于Linux下中文乱码的完整处理方案.docx

    然而,这种方法可能导致安装时创建的中文字符(如文件夹名、文件名和文件内容)在新字符集下变成乱码。 为了彻底解决这个问题,可以采用以下完整处理方案: 1. **英文安装Linux系统**:在安装Linux时,选择英文版...

    JS中页面与页面之间超链接跳转中文乱码问题的解决办法

    在JavaScript中进行页面与页面之间的超链接跳转时,如果链接中包含中文字符,很可能会遇到中文乱码的问题。这种现象通常发生在URL传递过程中,服务器...通过系统地检查和配置,可以彻底解决页面跳转中的中文乱码问题。

    完美解决PHP中文乱码

    可以生成一个只有字母和数字的序列作为文件名,而将原来带有中文的名字保存在数据库中,这样调用 move_uploaded_file() 就不会出现问题,下载的时候只需将文件名改为原来带有中文的名字。实现下载的代码如下: ``` ...

    oracleimp导入中文乱码实用.pdf

    在Oracle数据库管理中,遇到导入数据时出现中文乱码的问题,通常与字符集设置有关。此问题中的情况是,从一个使用ZHS16GBK字符集的源数据库导出的数据在导入到使用WE8ISO8859P1字符集的目标数据库时出现了乱码。这是...

    电脑问题大全txt格式

    此时可通过检查Photoshop的字体设置或重新安装相关字体来解决问题。 4. **CD无法识别**: - 使用虚拟光驱工具如Daemon Tools时,可能会遇到无法识别CD的问题。解决此类问题的方法包括检查是否正确选择了模拟设备、...

    NX安装相关问题

    ### UG(Unigraphics NX)安装常见问题与解决方案 #### 一、系统语言与东亚语言包 ...以上问题与解决方案涵盖了UG安装和运行中常见的技术障碍,遵循这些指导原则,可有效提升安装成功率和软件稳定性。

    MySQL数据库安装常见报错解决方案汇总.docx

    问题描述:MySQL安装的默认编码集是Latin,如果在安装过程中没有修改成utf-8,则在后续使用中,对于中文数据,会出现乱码现象。 解决方案: 1. 修改数据库字符集:alter database 数据库名 character set utf8mb4;...

    300个注册表优化修改文件

    设置显示文件的扩展名.reg 设置在我的电脑中显示打印机.reg 鼠标自动激活当前窗口.reg 缩短关闭无响应程序时的等待时间.reg 提高光驱的读写能力.reg 提高历史缓冲区的个数.reg 提高软驱的性能.reg 提高显示器...

    驱动精灵(可以备份驱动,也可以升级驱动)

    4、新增网络判断功能与提醒功能,在网络状况不佳或意外中断情况下可以协助您解决问题。 5、增加可自动判断的软件安全启动模式。 6、硬件检测结果改为中文显示,并增加更多新硬件支持。 7、解决了2009版本软件自动...

    [2010.10.14][封装工具][天空作品] Easy Sysprep v3 RC3(+ SkySRS3.00)

    2、增加一个对MS-Office2003的修正功能,对部署后Office问题有一定的修正能力,但仍建议选择优秀的Office修改版本从而可彻底避免此问题 3、感谢Canon提供的2中所述的修正程序 4、整合SkySRS2.99,增强部署兼容性和...

Global site tag (gtag.js) - Google Analytics