我在采用tomcat5.05作服务器,点击超链接下载时浏览器直接打开文件,并出现乱码,下载文件为word文档时没有问题,直接打开,当下载文件为excel文件时,就用游览器直接打开了,并出现乱码,有哪为高手帮我解决一下,是不是tomcat不认识这几种类型的文件啊.
另外我点另存为时,能否在程序中指定存的文件,现在的文件名是数据库里存的,用数字随机生成的,我想在保存时另外指定,不知怎么实现

解决方案 »

  1.   

    用这个servlet可以解决你说的问题,filePath为上传文件在服务器上的相对路径,fileType为上传文件的类型(如excel文件为"application/xls")public class OpenFile extends HttpServlet{
    protected void doGet(HttpServletRequest request,HttpServletResponse response)
    throws ServletException,IOException{
    ServletOutputStream out = response.getOutputStream();
    ServletContext context = getServletConfig().getServletContext();
    try{
    response.setContentType(request.getParameter("fileType"));
    String filePath= request.getParameter("filePath");
    InputStream istream = context.getResourceAsStream(filePath);
    BufferedInputStream bis = new BufferedInputStream(istream);
    BufferedOutputStream bos = new BufferedOutputStream(out);
    byte[] buffer = new byte[4096];
    int size;
    size = bis.read(buffer);
    while (size != -1){
    bos.write(buffer,0,size);

    size = bis.read(buffer);

    }
    bis.close();
    bos.flush();
    }
    catch(Exception e){
    e.printStackTrace();
    }
    }
    protected void doPost(HttpServletRequest request,HttpServletResponse response)
    throws ServletException,IOException{
    doGet(request,response);
    }}
      

  2.   

    这个怎么用啊,我上传的文件没有问题,只是用超链接下载时,点击超链接就直接用浏览器打开了,excel文件直接用超链接打开是乱码,如果点右键另存为下载后用excel打开没有问题.
      

  3.   

    jsp页面保存到数据库有乱码解决方法Jsp+tomcat+bean中文乱码问题解决方法javabean中参数有乱码
    1) 所有的jsp页面指定字符编码方式,如:Charest=gb2312,Charest=UTF-8等等
    2) 在应用服务器中的server.xml方件中找到设置服务器端口的行,一般是这样开头:”<Connector port="8080"”,
    3) 在找到的行"<Connector"开头的字符串后加上:URIEncoding="UTF-8" ,保存文件
    --------------------------------------------------------------------------
    jsp页面有乱码解决方法    所有的jsp页面指定字符编码方式,如:Charest=gb2312,Charest=UTF-8等等
        <%@ page contentType="text/html; charset=UTF-8">
    --------------------------------------------------------------------------
    jsp单个中文参数乱码解决方法    用这个转换一下: 
        <%!String trans(String chi)
           {
            string result =null;
            byte temp[];
            temp=chi.getBytes("iso=8859-1");
            result= new String(temp);
            }
        %>
    或者直接这样:
        <% 
          request.setCharacterEncoding("UTF-8");
          out.println(request.getParameter("参数ID")
        %>
    --------------------------------------------------------------------------
      

  4.   

    public String getstring(String s)
    {
    if(s==null){s="";}
    try
    {
    byte[] b=s.getBytes("ISO-8859-1");
    s=new String(b);
    }
    catch(Exception e)
    {
    s="";}
    return s;
    }加上这个方法就OK 了