试试可不可以用contentLength来判断

解决方案 »

  1.   

    我是套一个try catch ,外加一个全局的boolean型变量,在finally根据boolean变量的值来实现的。可我总觉得servlet本身也该可以提供一个解决的机制而我不知道。
      

  2.   

    socket timeout怎样? 超时了就删除好啦.
      

  3.   

    用try catch 可以截获掉这样的错误org.apache.catalina.connector.ClientAbortException
      

  4.   

    多开一个线程阻塞读client的输入,出现异常或读到尾时通知servlet,如果些时servlet还没发送完数据则删除文件.
      

  5.   

    比如客户端用 winamp 通过这个servlet访问一个远程的MP3文件,保存到这个servlet所在服务器上指定的目录里的文件是随着访问的过程慢慢增大的。这种问题是你自己的设计思想造成的,你没有办法改的,除非你重新写你的程序。
    =====================================================================================可是如果没有听完,就关闭掉winamp,那么保存的文件是不完整的。这时,servlet有什么机制来判断客户端的请求已中断?这样可以用来删除那个不完整的文件。这种情况你可以用一个try--catch--finally块来处理,不管你是用Socket编写的,还是用流来处理的,在这个try--catch--finally块中,只要出现异常,那么你就在finally中把刚才存放的那个文件删掉,同时释放资源。这样就可以处理了,如果没有异常,那说明用户也没有在中途关闭应用程序,是正常的情况,程序自动会处理的。