首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

Ajax+php带进度条下传文件

2012-11-23 
Ajax+php带进度条上传文件程序需要php的apc模块的支持,关键点就是在上传的form里添加一个hidden的inpu标签

Ajax+php带进度条上传文件

程序需要php的apc模块的支持,关键点就是在上传的form里添加一个hidden的inpu标签,里面要有name为

APC_UPLOAD_PROGRESS的属性,value值为一个随机数一遍多个人上传。

?

apc模块的安装方法是,下载php_apc.dll放到ext文件夹下,在php.ini文件里添加

upload_max_filesize =100M
????? apc.rfc1867 = on
????? apc.max_file_size = 100M

extension=php_apc.dll

然后测试配置是否成功:
if(apc_fetch)

{echo "apc is working"}

else{echo "apc is not supported!";}

?

?

?

运行效果截图

Ajax+php带进度条下传文件

下面是源码

1 前台页面:

?

2后台upload.php文件代码:

<?php/* * Created on 2010-4-16 * * To change the template for this generated file go to * Window - Preferences - PHPeclipse - PHP - Code Templates */ if ($_SERVER['REQUEST_METHOD'] == 'POST'){$myfile=$_FILES['upfile'];echo $myfile['size'];echo $myfile['size'];print_r($myfile);$tempf=$myfile['tmp_name'];$name=$myfile['name'];move_uploaded_file($tempf,'up/'.$name);}if(isset($_GET['key'])){//header('Content-Type:application/json; charset=utf-8' ) ;    // Retrieve the status using the getStatus() function below    //echo json_encode(getStatusAPC());    echo json_encode(getStatusAPC());}function getStatusAPC(){$response=false;if($status = apc_fetch('upload_'.$_GET['key'])) {$response=apc_fetch('upload_'.$_GET['key']);}return $response;}?>

?问题总结:

1,使用setTimeout嵌套和setInterval有区别,用前者效果较好,用后者的话由于请求和返回的时间比较随机,时间间隔把握不好的话,程序会比较混乱,结果往往不正确。

2.发送Ajax请求时每次都要重新实例化xmlhttprequest对象而不能用上次实例化的,否则程序在ie下无法执行,在火狐下可以运行

?

?

1 楼 menglongmomo 2012-03-02   为什么我试了,能够上传成功,但是没有绿色的条出来啊,只有一个红的

热点排行