php+ajax文件上传进度条

找到一篇文章PHP AJAX File Upload Progress Meter Updates,介绍如何用php Pear:HTML_AJAX制作带有进度条的文件上传,下面是我测试上传时的示意图

ajax带进度条上传


代码分为以下部分:

demo.php – 上传过程处理

< ?php

include 'UploadProgressMeter.class.php';

$fileWidget = new UploadProgressMeter();

if ($fileWidget->uploadComplete()) {
        // 上传完毕的时候,从iframe发送一个js到主窗口表示一切ok
        echo $fileWidget->finalStatus();

        // 处理上传后的文件...

        exit;
}
?>

demoserver.php – ajax的服务端js,使用Pear:HTML_AJAX,直接调用UploadProgressMeterStatus类
[html]

< ?php echo $fileWidget->renderIncludeJs(); ?>[/html]

进度条的样式表
[css].progressBar {
position: relative;
padding: 2px;
width: 300px;
height: 40px;
font-size: 14px;
}
.progressBar .background {
border: solid 1px black;
width: 270px;
height: 20px;
}
.progressBar .bar {
position: relative;
background-color: blue;
width: 0px;
height: 20px;
}[/css]

表单部分
[html]

renderFormExtra(); ?>>
< ?php echo $fileWidget->renderHidden(); ?>

< ?php echo $fileWidget->render(); ?>
< ?php echo $fileWidget->renderProgressBar(); ?>

[/html]

demo下载 – 密码是www.ooso.net
作者的svn浏览

其它类似项目:
http://pdoru.from.ro/ – 要以patch的形式和php一起编译
http://www.ugia.cn/?p=54 – 以socket上传文件并显示进度条

18 Replies to “php+ajax文件上传进度条”

  1. 这样感觉没什么意义.
    Ajax和服务器的通讯要用户察觉有什么用呢?

  2. 既然都打包了,怎么不把完整的代码放进去(这样还加密,真是汗).原作者的版本控制也够乱的,下了几个版本都调试不成功,其他演示也没哪个能引起别人去使用的欲望,到是注释写得很标准,代码风格很OOP,外国的程序员还是比较敬业的.

  3. 没有人要求我一定要服务上门吧?至于加密,是因为这服务器不是我的,防盗链无可厚非

  4. 异步上传文件我很早就捣腾过,国外有几种探讨方案,但都不理想,一种采用perl后台语言的可以返回进度,而php不能返回进度;另外弄一个隐藏得表单甚至iframe,浏览器会显示正在打开网页的状态,比如IE上角的地球在转。总之,都不理想。gmail就没有用异步,可能说明问题。

  5. 请教楼主,有没有类似于像优酷他们用户上传视频的那种上传方法,使用PHP来实现!有的话可以联系我啊

    223883921

Leave a Reply

Your email address will not be published.