您的位置:程序门 -> java -> j2ee / ejb / jms



servlet下载页面为何出错, java.net.socketexception: connection reset by peer:socket write error


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


servlet下载页面为何出错, java.net.socketexception: connection reset by peer:socket write error
发表于:2008-01-10 21:08:32 楼主
我写了个简单的下载servlet,代码如下,但点击下载附件链接时弹出下载窗口,点击下载则报错,错误如题,可这并不影响正常下载,请问为何?
package   net.servlet;

import   java.io.fileinputstream;
import   java.io.outputstream;
import   java.io.ioexception;
import   java.io.printwriter;
import   net.object.*;

import   javax.servlet.servletexception;
import   javax.servlet.servletoutputstream;
import   javax.servlet.http.httpservlet;
import   javax.servlet.http.httpservletrequest;
import   javax.servlet.http.httpservletresponse;

public   class   getfile   extends   httpservlet   {

public   getfile()   {
super();
}

public   void   destroy()   {
super.destroy();   //   just   puts   "destroy"   string   in   log
}

public   void   doget(httpservletrequest   request,   httpservletresponse   response)
throws   servletexception,   ioexception   {
                                      string   attachid=request.getparameter("attach");//获取附件编号
      string   realpath=request.getrealpath("/");
      string   filepath=getservletcontext().getinitparameter("filepath");
      fileinputstream   in=null;
      servletoutputstream   output   =   null;  
      int   id=integer.valueof(attachid);
      messagedao   messagedao=new   messagedao();
      message   message=new   message();
      message=messagedao.findbyid(id);
      string   attachname=message.getmessageattach();//获取附件名称
      string   u_name   =realpath+   filepath+"\\"+   attachname   ;      
   
      try
      {
      response.reset();
      response.setcontenttype("application/x-msdownload");
      response.setheader("content-disposition",   "attachment;   filename="   +   toutf8string(attachname));
        in   =   new     fileinputstream(u_name);  
        output=response.getoutputstream();
      output.flush();
      int   aread   =   0;
      while((aread   =   in.read())   !=   -1   &   in   !=   null)
                {
                    output.write(aread);
                  }
                      output.flush();
      }
      catch(exception   e)
        {
        e.printstacktrace();
        }
        finally
          {
            in.close();
            output.close();              
          }
}

public   void   init()   throws   servletexception   {
//   put   your   code   here
}
public   static   string   toutf8string(string   s)   {
                stringbuffer   sb   =   new   stringbuffer();
                for   (int   i=0;i <s.length();i++)   {
                        char   c   =   s.charat(i);
                        if   (c   > =   0   &&   c   <=   255)   {
                                sb.append(c);
                        }   else   {
                                byte[]   b;
                                try   {
                                        b   =   character.tostring(c).getbytes("utf-8");
                                }   catch   (exception   ex)   {
                                        system.out.println(ex);
                                        b   =   new   byte[0];
                                }
                                for   (int   j   =   0;   j   <   b.length;   j++)   {
                                        int   k   =   b[j];
                                        if   (k   <   0)   k   +=   256;
                                        sb.append("%"   +   integer.tohexstring(k).
                                        touppercase());
                                }
                        }
                }
                return   sb.tostring();
      }


}


快速检索

最新资讯
热门点击