关于下载,如何知道用户是否下载成功?

ufc 2006-09-20 02:41:05
服务器上用servlet做成的下载链接,用户点击下载后,出现下载框,如果中途用户取消或网络原因导致下载不成功或失败,服务器如何知道? 或者换个方便,就是能否让这个serlet的下载成功后自动forward到别一servlet呢?告之,马上结贴啊,谢谢了.
...全文
261 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
huliangyu 2006-09-20
  • 打赏
  • 举报
回复
学习呀,顶你。
treeroot 2006-09-20
  • 打赏
  • 举报
回复
通过流写入,如果用户中断就会产生异常,通过异常判断
jihanzhong 2006-09-20
  • 打赏
  • 举报
回复
好象没办法
ufc 2006-09-20
  • 打赏
  • 举报
回复
顶一下
kinsey0514 2006-09-20
  • 打赏
  • 举报
回复
做记号。。
maquan 2006-09-20
  • 打赏
  • 举报
回复
> 我知道用户一点击下载链接时候就是就向 response的流
> 写入数据的,但实际上用户并没有开始下载,写入数据只
> 是在cahce里?到这里,我只知道用户点击了下载,并不
> 知道是否成功啊.

如果你已经把全部数据都写入了 response 的输出流,而没有发生异常,那就只能认为全部内容已经成功地传送到客户端了。如果还想进一步了解客户端是否保存成功,还是仅仅停留在 cache 里,这对于服务器端而言,是不可能的事情。

如果要在客户端检查这个事情,恐怕也不是脚本能解决的,可能需要在 IE 里挂一个 Download Manager。

有一个变通的手段,不知能否符合楼主的要求:不使用 IE 自己的“另存为……”机制,而是通过 JavaScript 发送 HttpRequest,再通过 FileSystem 对象保存到硬盘。这样的话,整个下载、保存的过程都在你的 script 控制之下。当然这种方法在使用过程中会有一些缺陷。
xiaomad 2006-09-20
  • 打赏
  • 举报
回复
往response里面写一段flush一下,直到所有数据写完了以后再flush,如果没问题基本上可以认为所有的数据已经到客户端了把。
如果都走不到flush,或者flush的时候就出了异常,估计传输就中断了。
没有验证,试试看吧。
ufc 2006-09-20
  • 打赏
  • 举报
回复
treeroot(旗鲁特) 能说详细点吗?
  我知道用户一点击下载链接时候就是就向 response的流 写入数据的,但实际上用户并没有开始下载,写入数据只是在cahce里?到这里,我只知道用户点击了下载,并不知道是否成功啊.
  或者,在客户端的脚本里,能否捕获到用户在下载时候的事件(如成功或取消),可别说是做个ACTIVEX来实现啊.

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧