中文文件名保存的时候一般要转一下
file.saveAs(new String(file.getFileName().getBytes(),"gb2312"));
还有href可以带中文的~

解决方案 »

  1.   

    下载的时候不用别的类,你直接在JSP中写就行了
          java.io.File file = new File(fileName);
          InputStream input = new FileInputStream(file);
          int len=0;
          byte[] b=new byte[256];
          response.setContentType("application/octet-stream; charset=gb2312");
          response.addHeader("Content-Disposition","attachment; filename=" + fileName);
            OutputStream output = response.getOutputStream();
            while((len=input.read(b))!=-1){
                   output.write(b,0,len);
            }
            input.close();
            output.close();
            return;
      

  2.   

    谢了,各位!我的这个上传下载是在jspsmart网站下载的class文件。
    上传成功了,无论是传后的文件名,还是存在数据库的该文件名都正确,就是在下载连接的时候找不到文件:(
    accp(accp) ——谢谢你,我马上试试!另外我的<a href="中文网页.htm">...</a>连接不好用不知道你们还能不能看到这个贴子,下午我一直上不了csdn,现在才爬上来:(
      

  3.   

    down.jsp文件代码:(bean是原来用的)<%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.io.File"%>
    <%@ page language="java" import="com.jspsmart.upload.*"%><jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload"/>
    <html>
    <head><title></title>
    </head>
    <body>
    <%
    String fileName="";
    fileName=request.getParameter("downFile");
    fileName =new String(fileName.getBytes("ISO8859_1"),"GBK");
    //fileName =fileName+"人月神话.pdf";
    out.println("fileName:"+fileName);java.io.File file = new File(fileName);
          InputStream input = new FileInputStream(file);
          int len=0;
          byte[] b=new byte[256];
          response.setContentType("application/octet-stream; charset=gb2312");
          response.addHeader("Content-Disposition","attachment; filename=" + fileName);
            OutputStream output = response.getOutputStream();
            while((len=input.read(b))!=-1){
                   output.write(b,0,len);
            }
            input.close();
            output.close();
            //return;
    //filename="/xzzx/file/人月神话.pdf";
    // Initialization
    //mySmartUpload.initialize(pageContext);
    // Download file
    //out.println(filename);
    //mySmartUpload.downloadFile(fileName);
    // With a physical path
     //mySmartUpload.downloadFile("c:\\temp\\sample.zip")
    // With options
    // mySmartUpload.downloadFile("/wdgzq/upload/test.zip","application/x-zip-compressed","downloaded.zip") 
    %> 
    </body>
    </html>
      

  4.   

    另外我的<a href="中文网页.htm">...</a>连接不好用
    _________________________
    怎么会呢?我这样的都没问题<a href="+ 河南省经济贸易委员会 +.htm">勒克司大家发</a>
    不过我还是从没用中文作文件名的~
      

  5.   

    错误信息:
    取到的fileName应该是/xzzx/file/人月神话.pdf ,但却是/xzzx/file,即使人为加上/人月神话.pdf 也是找不到,难道真是服务器不支持??我用的是alpha,jdk1.3 (alpha版本),tomcat3.1。能不能解决哦.Error: 500
    Location: /web/down.jsp
    Internal Servlet Error:javax.servlet.ServletException: /xzzx/file (No such file or directory)
    at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java, Compiled Code)
    at _0002fdown_0002ejspdown_jsp_15._jspService(_0002fdown_0002ejspdown_jsp_15.java, Compiled Code)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java, Compiled Code)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java, Compiled Code)
    at org.apache.jasper.runtime.JspServlet$JspServletWrapper.service(JspServlet.java, Compiled Code)
    at org.apache.jasper.runtime.JspServlet.serviceJspFile(JspServlet.java, Compiled Code)
    at org.apache.jasper.runtime.JspServlet.service(JspServlet.java, Compiled Code)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java, Compiled Code)
    at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java, Compiled Code)
    at org.apache.tomcat.core.ContextManager.service(ContextManager.java, Compiled Code)
    at org.apache.tomcat.service.connector.Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java, Compiled Code)
    at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java, Compiled Code)
    at java.lang.Thread.run(Thread.java:484)Root cause: 
    java.io.FileNotFoundException: /xzzx/file (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.(FileInputStream.java, Compiled Code)
    at java.io.FileInputStream.(FileInputStream.java, Compiled Code)
    at _0002fdown_0002ejspdown_jsp_15._jspService(_0002fdown_0002ejspdown_jsp_15.java, Compiled Code)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java, Compiled Code)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java, Compiled Code)
    at org.apache.jasper.runtime.JspServlet$JspServletWrapper.service(JspServlet.java, Compiled Code)
    at org.apache.jasper.runtime.JspServlet.serviceJspFile(JspServlet.java, Compiled Code)
    at org.apache.jasper.runtime.JspServlet.service(JspServlet.java, Compiled Code)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java, Compiled Code)
    at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java, Compiled Code)
    at org.apache.tomcat.core.ContextManager.service(ContextManager.java, Compiled Code)
    at org.apache.tomcat.service.connector.Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java, Compiled Code)
    at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java, Compiled Code)
    at java.lang.Thread.run(Thread.java:484)
      

  6.   

    要用绝对路径,不能用相对路径~
    如果你是在web的根目录下放着,这样
    String fileName = application.getRealPath("/xzzx/file/人月神话.pdf");
    File file = new File(fileName);
      

  7.   

    我刚才正在试,不过不行,而且换了一台linux服务器,也不行。还请问:我的上传中文文件就好使,但下载为什么不好用呢。谢谢
      

  8.   

    我本来把文件存储路径存在数据库中了,取出来以后,传到down.jsp页面,得到的路径确不全,缺少中文文件名的部分,就像上个错误。我又干脆把绝对路径写到fileName,还是不行啊,错误如下:
    Error: 500
    Location: /web/down.jsp
    Internal Servlet Error:javax.servlet.ServletException: /home/java/jakarta-tomcat/webapps/ROOT/xzzx/file/人月神话.pdf (No such file or directory)
    at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java, Compiled Code)
    at _0002fdown_0002ejspdown_jsp_27._jspService(_0002fdown_0002ejspdown_jsp_27.java, Compiled Code)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java, Compiled Code)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java, Compiled Code)
    at org.apache.jasper.runtime.JspServlet$JspServletWrapper.service(JspServlet.java, Compiled Code)
    at org.apache.jasper.runtime.JspServlet.serviceJspFile(JspServlet.java, Compiled Code)
    at org.apache.jasper.runtime.JspServlet.service(JspServlet.java, Compiled Code)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java, Compiled Code)
    at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java, Compiled Code)
    at org.apache.tomcat.core.ContextManager.service(ContextManager.java, Compiled Code)
    at org.apache.tomcat.service.connector.Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java, Compiled Code)
    at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java, Compiled Code)
    at java.lang.Thread.run(Thread.java:484)Root cause: 
    java.io.FileNotFoundException: /home/java/jakarta-tomcat/webapps/ROOT/xzzx/file/人月神话.pdf (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.(FileInputStream.java, Compiled Code)
    at java.io.FileInputStream.(FileInputStream.java, Compiled Code)
    at _0002fdown_0002ejspdown_jsp_27._jspService(_0002fdown_0002ejspdown_jsp_27.java, Compiled Code)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java, Compiled Code)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java, Compiled Code)
    at org.apache.jasper.runtime.JspServlet$JspServletWrapper.service(JspServlet.java, Compiled Code)
    at org.apache.jasper.runtime.JspServlet.serviceJspFile(JspServlet.java, Compiled Code)
    at org.apache.jasper.runtime.JspServlet.service(JspServlet.java, Compiled Code)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java, Compiled Code)
    at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java, Compiled Code)
    at org.apache.tomcat.core.ContextManager.service(ContextManager.java, Compiled Code)
    at org.apache.tomcat.service.connector.Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java, Compiled Code)
    at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java, Compiled Code)
    at java.lang.Thread.run(Thread.java:484)
      

  9.   

    那你就到服务器看一下到底有没有这个文件呀
    /home/java/jakarta-tomcat/webapps/ROOT/xzzx/file/人月神话.pdf 
    有的话文件名正确不正确,
    再者如果你把文件存到数据库中了,下载的时候从数据库中取出直接传给下载页面下载就行了