服务器上用servlet做成的下载链接,用户点击下载后,出现下载框,如果中途用户取消或网络原因导致下载不成功或失败,服务器如何知道? 或者换个方便,就是能否让这个serlet的下载成功后自动forward到别一servlet呢?告之,马上结贴啊,谢谢了.

解决方案 »

  1.   

    treeroot(旗鲁特) 能说详细点吗?
      我知道用户一点击下载链接时候就是就向 response的流 写入数据的,但实际上用户并没有开始下载,写入数据只是在cahce里?到这里,我只知道用户点击了下载,并不知道是否成功啊. 
      或者,在客户端的脚本里,能否捕获到用户在下载时候的事件(如成功或取消),可别说是做个ACTIVEX来实现啊.
      

  2.   

    往response里面写一段flush一下,直到所有数据写完了以后再flush,如果没问题基本上可以认为所有的数据已经到客户端了把。
    如果都走不到flush,或者flush的时候就出了异常,估计传输就中断了。
    没有验证,试试看吧。
      

  3.   

    > 我知道用户一点击下载链接时候就是就向 response的流
    > 写入数据的,但实际上用户并没有开始下载,写入数据只
    > 是在cahce里?到这里,我只知道用户点击了下载,并不
    > 知道是否成功啊. 如果你已经把全部数据都写入了 response 的输出流,而没有发生异常,那就只能认为全部内容已经成功地传送到客户端了。如果还想进一步了解客户端是否保存成功,还是仅仅停留在 cache 里,这对于服务器端而言,是不可能的事情。如果要在客户端检查这个事情,恐怕也不是脚本能解决的,可能需要在 IE 里挂一个 Download Manager。有一个变通的手段,不知能否符合楼主的要求:不使用 IE 自己的“另存为……”机制,而是通过 JavaScript 发送 HttpRequest,再通过 FileSystem 对象保存到硬盘。这样的话,整个下载、保存的过程都在你的 script 控制之下。当然这种方法在使用过程中会有一些缺陷。