如何判断一个文件被客户端成功下载
rt,如何能够确认文件被客户端成功下载?
------解决方案-------------------- 一般情况下当输出完头以后就直接将整个文件输出出去
通常用的是 ceho、print 有的干脆用 readfile
这样 php 就没有机会去判断用户是否终止了下载
你需要在循环中用较小的块,通过 sprintf 输出文件内容
springf 函数会返回一个表示输出了多少字符的数。你可以累计这个数,并与文件长度进行比较
从而判断下载是否完成
------解决方案-------------------- 基本上是没法判断的。。。
------解决方案-------------------- 基于http是没办法做到的。比如服务器返回了2000个字节让你下载保存,这时候你在你在浏览器点了取消按钮,或者下载到一半取消,再或者下载完成,这些个动作只在客户端浏览器执行,并不会将状态通知服务器。
------解决方案-------------------- 说的不对,应该说基于浏览器的客户端无法做到,下载保存那些动作是浏览器帮你处理的。
如果说你自己写个客户端,很容易可以判断,计算返回字节数,统计保存成文件的字节数两个一比较就行。
------解决方案-------------------- IE下可使用ActiveX,FireFox下可以使用NPAPI
------解决方案-------------------- 一般来讲,要判断文件下载完毕的话需要通过控件来实现。普通的JS是没法判断的。
------解决方案-------------------- 引用: 这个要用控件来做。
默认界面
批量下载中
下载中...
下载完毕
强,这个不错。最近我们公司也在做一个OA项目,也要判断文件下载完成的事件,正需要一个这样的HTTP文件下载控件,能否把地址发一下。谢谢。
------解决方案-------------------- 引用: 引用:
这个要用控件来做。
默认界面
批量下载中
下载中...
下载完毕
强,这个不错。最近我们公司也在做一个OA项目,也要判断文件下载完成的事件,正需要一个这样的HTTP文件下载控件,能否把地址发一下。谢谢。
这个好像是Xproer.HttpDownloader。可以在网上直接搜到。
------解决方案-------------------- 引用: rt,如何能够确认文件被客户端成功下载?
如果是通过PHP页面下载的话可以在PHP页面中直接判断。如果想在客户端判断的话,需要借助于插件来实现。
------解决方案-------------------- 引用: 引用:
引用:
这个要用控件来做。
默认界面
批量下载中
下载中...
下载完毕
强,这个不错。最近我们公司也在做一个OA项目,也要判断文件下载完成的事件,正需要一个这样的HTTP文件下载控件,能否把地址发一下。谢谢。
这个好像是Xproer.HttpDownloader。可以在网上直接搜到。
我们之前给政府做的一个文档管理类的项目也是用的这个控件。感觉不错。整合也简单。
------解决方案-------------------- 引用: 说的不对,应该说基于浏览器的客户端无法做到,下载保存那些动作是浏览器帮你处理的。
如果说你自己写个客户端,很容易可以判断,计算返回字节数,统计保存成文件的字节数两个一比较就行。 是吗?是否要给你段代码看看才相信?
------解决方案-------------------- send_file 函数是在网上找的,写的并不好,但他确能保证数据不丢失
在此基础上做了些改动,代码中有注释
send_file('03.bmp',1);//为了测试方便我取了较小的块尺寸
function send_file($file, $speed = 100) {
//First, see if the file exists
if (!is_file($file)) {
die("<b>404 File not found!</b>");
}
//Gather relevent info about file
$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"."),1));
// This will set the Content-Type to the appropriate setting for the file