如何判断一个文件被客户端成功下载

hncsl 2012-04-12 01:50:12
rt,如何能够确认文件被客户端成功下载?
...全文
4569 92 打赏 收藏 转发到动态 举报
写回复
用AI写文章
92 条回复
切换为时间正序
请发表友善的回复…
发表回复
夏之冰雪 2012-12-06
  • 打赏
  • 举报
回复
晚点稍作研究~
hututu321 2012-12-06
  • 打赏
  • 举报
回复
为什么要那么准确?
hututu321 2012-12-06
  • 打赏
  • 举报
回复
为什么要那么准确?
wangliwei230 2012-05-11
  • 打赏
  • 举报
回复
看 高手 如何解决的!!!
卡瓦-博格 2012-05-10
  • 打赏
  • 举报
回复
好好学习啊,不懂
laokaizzz 2012-04-26
  • 打赏
  • 举报
回复
为什么不用md5验证呢,判断相等,不就是下载完了么
GZ5100 2012-04-23
  • 打赏
  • 举报
回复
学习了,谢谢
arduact 2012-04-21
  • 打赏
  • 举报
回复
基本上是没法判断的
hncsl 2012-04-21
  • 打赏
  • 举报
回复
高人呀。我OUT了。感谢大家的参与。和你们相比,我简直即井底之蛙。

我感觉这个功能也是做个插件,通过端口传送比较可靠。才能准确判断客户端已接收了多少字节,能够判断客户端是否点击了取消按钮。

也有可能是IE的dll函数功能有此功能,只是不知道函数而已。
mousesmh 2012-04-20
  • 打赏
  • 举报
回复
这个似乎有点复杂。
jdgdf566 2012-04-20
  • 打赏
  • 举报
回复
下载不完整是由2个原因导致的。一是由用户点击 STOP 按钮,远程客户端中断连接。二是当连接时间超过 PHP 的时限,TIMEOUT。

在php中是可以判断连接状态的。系统维护着连接状态,其状态有三种可能的情况:
0 - NORMAL(正常)
1 - ABORTED(异常退出)
2 - TIMEOUT(超时)
使用connection_status()函数可以得到状态值。用php读入一个文件并输出后,用此函数查看连接状态就可以了。如果是0 - NORMAL(正常),那么,下载完毕!

但是问题没有这么简单。

用php读入一个文件并输出,实际上并不是直接输出的。因为php是与操作系统的进程打交道的。文件被写入到了输出缓冲。因此需要刷新PHP程序的输出缓冲,将当前为止程序的所有输出发送到用户的浏览器。
用flush()!flush() 函数不会对服务器或客户端浏览器的缓存模式产生影响。因此,必须同时使用ob_flush() 和flush() 函数来刷新输出缓冲。
但是有些情况下刷新是无效的,因为个别web服务器程序,特别是Win32下的web服务器程序,在发送结果到浏览器之前,仍然会缓存脚本的输出,直到程序结束为止。这意味着在windows下,可能会无效。有些Apache的模块,比如mod_gzip,可能自己进行输出缓存,这将导致flush()函数产生的结果不会立即被发送到客户端浏览器。这意味着,要下载的文件如果是压缩文件并且是需要即时性生成的,那么可能会无
效。

那么我们的程序流程:读文件,输出文件,刷新缓存,查看连接状态。
读文件并输出最简单的函数是int fpassthru ( resource $handle )
将给定的文件指针从当前的位置读取到 EOF 并把结果写到输出缓冲区。因此用这一个函数就够了,不用先读入再输出。
zzl17100932 2012-04-19
  • 打赏
  • 举报
回复
都是高手呀
rmyx1981 2012-04-18
  • 打赏
  • 举报
回复
这个我要好好学习啦
helloyou0 2012-04-17
  • 打赏
  • 举报
回复
为什么那么多的回复被删除了呢?
taifklz 2012-04-17
  • 打赏
  • 举报
回复
高手解决 这个不懂
pzhuyy 2012-04-17
  • 打赏
  • 举报
回复
mark.
com组件的东东吧,只是不明白这样做用在什么地方?
yangxihe8518 2012-04-17
  • 打赏
  • 举报
回复
看来还要不断的学习啊
aji19810907 2012-04-17
  • 打赏
  • 举报
回复
判断不了吧
卡瓦-博格 2012-04-15
  • 打赏
  • 举报
回复
我记得无法解决,因为不一定有值返回……
cdcjk 2012-04-15
  • 打赏
  • 举报
回复
要判断文件下载完毕的话需要通过控件来实现
加载更多回复(45)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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