- 浏览: 86085 次
- 性别:
- 来自: 河北
最新评论
-
xiaobing522:
回1楼 因为你的apc扩展可能没有配置成功。按照楼主的测试方法 ...
Ajax+php带进度条上传文件 -
menglongmomo:
为什么我试了,能够上传成功,但是没有绿色的条出来啊,只有一个红 ...
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!";}
运行效果截图
下面是源码
1 前台页面:
<html> <title>PHP+Ajax带进度条文件上传</title> <head> <style type="text/css"> #progress{ border:2px red solid; width:200px; height:20px; display:none; } #pecent{ background-color:green; display:block; width:0px; height:20px; color:yellow; } </style> </head> <body> <iframe style="display:none" name="ifm"></iframe> <form enctype="multipart/form-data" method="POST" action="upload.php" target="ifm" name="myform"> <input type="hidden" name="APC_UPLOAD_PROGRESS" id="remark" > <input type="file" name="upfile"/> <input type="submit" value="上传" name="sub"/> </form> <div id="progress" class="before"><span id="pecent"></span></div> <script type="text/javascript"> (function(){ function addEvent( node, type, listener ) { if (node.addEventListener) { // W3C method node.addEventListener( type, listener, false ); return true; } else if(node.attachEvent) { // MSIE method node['e'+type+listener] = listener; node[type+listener] = function(){node['e'+type+listener]( window.event );} node.attachEvent( 'on'+type, node[type+listener] ); return true; } // Didn't have either so return false return false; }; var submit=document.forms["myform"]; addEvent(submit,'submit',startUpload); var begin; var request; var rdm; var pec=document.getElementById("pecent"); function startUpload() { rdm=Math.floor(Math.random()*100000000); document.getElementById('remark').setAttribute('value',rdm); document.getElementById("progress").style['display']='block'; //creatXmlHttpRequest(); begin=setTimeout(doRequest,1000); }; function creatXmlHttpRequest() { if(window.ActiveXObject) {request=new ActiveXObject("Microsoft.XMLHTTP")} else{request=new XMLHttpRequest();} }; var count=0; function doRequest() { if(window.ActiveXObject) {request=new ActiveXObject("Microsoft.XMLHTTP");} else{request=new XMLHttpRequest();} if(request!=null){ request.onreadystatechange=handle; request.open("GET","upload.php?key="+rdm+"&sim=" + (++count),true); request.send(); } }; function handle() { if(request.readyState==4&&request.status==200) { //接受服务器数据 var prgs=eval("(" + request.responseText + ")"); //var prgs=request.responseText; var cur=parseInt(prgs.current); var total=parseInt(prgs.total); var pecentIs=Math.round(cur/total*100); pec.innerHTML=pecentIs.toString()+"%"; if(100==pecentIs) { pec.style['width']="200px"; clearTimeout(begin); }else{ begin=setTimeout(doRequest,1000); //alert(pecentIs); pec.style['width']=pecentIs*2; } } }; })(); </script> </body> </html>
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下无法执行,在火狐下可以运行
- videoUpload.rar (2.8 KB)
- 下载次数: 267
评论
2 楼
xiaobing522
2013-09-10
回1楼 因为你的apc扩展可能没有配置成功。按照楼主的测试方法,
if(apc_fetch)
{echo "apc is working"}
else{echo "apc is not supported!";}
永远都是成功的。。。
if(apc_fetch)
{echo "apc is working"}
else{echo "apc is not supported!";}
永远都是成功的。。。
1 楼
menglongmomo
2012-03-02
为什么我试了,能够上传成功,但是没有绿色的条出来啊,只有一个红的
发表评论
-
Javascript中的this详解
2010-08-03 22:36 775Javascript中的this详解 2009年12月 ... -
joomla模板的执行过程
2010-07-02 18:02 1129模板的执行是一个2阶段的过程,这个过程充分利用了PHP解析器为 ... -
HTTP的请求和响应详解-----fsockopen
2010-04-11 19:58 3895进行Web开发关键是要了解超文本传输协议(HTTP),该协议用 ... -
练习制作tab菜单
2009-12-20 11:59 1084用到jQuery HTML代码: <!DOCTYPE ... -
php5.3.1和Apache2.2安装配置问题
2009-11-25 21:56 3227一,配置php 1.下载正确的版本,注意php有很多版本,要 ... -
javascript的prototype详解
2009-11-05 11:52 1360本文里讲述的是关于JavaScript的prototype问题 ... -
JavaScript习题练习
2009-11-04 22:58 01.编写一个方法 去掉一个数组的重复元素 <sc ... -
javascript使用方括号([])和“.”引用对象的属性和方法
2009-11-01 20:31 1969在JavaScript中,使用[]和点号“.”都可以以用对象的 ... -
正则表达式与replace
2009-10-30 21:54 1370简单介绍一下javascript中replace的用法 先看 ... -
理解hasOwnProperty()的作用
2009-10-27 22:29 14305hasOwnProperty:是用来判断一个对象是否有你给出名 ... -
Web2.0的概念
2009-10-01 15:47 1052Web2.0是2003年之后互联网 ... -
web发展史以及历史意义
2009-10-01 15:46 5254到目前为止,Web已经有了15到17年的历史(这得取决于你从 ... -
深入理解web2.0与web1.0的区别
2009-10-01 14:23 3024要理解WEB2.0,先得看WEB ... -
Web开发技术的历史发展简介
2009-10-01 14:14 1903讨论Web开发技术的历史,当然要先说说Web的起源。众所周知, ... -
JS添加事件处理函数
2009-09-29 08:49 2490作为一种事件驱动的编程语言,Js的程序很少主动执行,一般都是由 ... -
JavaScript的9大陷阱
2009-09-13 22:14 822收藏 1. 区分大小写:变量名、属性和方法全部都区 ... -
利用ajax动态显示xml于table中(js代码)
2009-08-21 11:24 1841var m=0; var frq1 ... -
JavaScript实现鼠标悬停显示缩略图
2009-08-17 14:51 1560// JScript 文件 showPhoto = { ... -
Web前端工程师技能列表
2009-08-17 13:25 2259要打造一流的Web产品开发团队,在团队成员基础能力上一定要下功 ...
相关推荐
主要介绍了PHP+Ajax异步带进度条上传文件实例代码,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友可以参考下。
修改ajaxfileupload.js 文件,实现ajaxfileupload文件上传进度条
主要介绍了PHP+Ajax实现上传文件进度条动态显示进度功能,通过ajax实现主界面,php处理上传文件,具体实例代码大家跟随脚本之家小编一起看看吧
php+apc+ajax实现大文件上传进度条
ajax+php+html+js 上传图片,有进度条,单张上传,下载的php文件可以直接localhost访问测试。详细描述地址:https://blog.csdn.net/qq_34297991/article/details/103927677
在使用ajaxForm方法之前,首先需要安装form.js的插件,网上可以找到,下面通过本文重点给大家介绍PHP+AjaxForm异步带进度条上传文件实例代码,感兴趣的朋友一起看看吧
选择本地图片后,立即上传并显示图像。本文结合实例讲解如何使用jQuery和PHP实现Ajax即时上传文件的功能,用户只需选择本地图片确定后即实现上传,并显示上传进度条,上传完成后,显示图片信息
之前分享了一篇关于 php使用FileApi实现Ajax上传文件 的文章,里面的Ajax文件上传是不带进度条的,今天分享一篇关于带进度条的Ajax文件上传文章。 效果图: 项目结构图: 12-progress-upload.html文件: 页面中...
php单文件实现ajax多文件上传带进度条 v20211024.zip
AjaxFileManager 是一款核心基于tinymce的PHP文件上传管理程序,操作动作显示进度条。可能本程序是把tinymce中的文件上传部分给摘录了出来,从测试情况看,大部分功能都保留着tinymce的风格。文件管理部分的功能:...
主要介绍了php+ajax实现带进度条的上传图片功能,涉及php文件传输及ajax无刷新提交的相关操作技巧,并附带demo源码供读者下载参考,需要的朋友可以参考下
本实例是关于php文件上传时进度条的实现,主要采用ajax技术,另外还运用了html5,有需要的朋友可以研究一下。 本实例有两个文件: upload_form.html: <!DOCTYPE html> <html> <head> [removed] ...
本文实例讲述了PHP+apc+ajax实现的ajax_upload上传进度条代码。分享给大家供大家参考,具体如下: 上传进度条是怎么实现的呢?原理是怎么样的呢?当我们浏览,选择上传后,会产生一个临时文件,上传的时把这个临时文件...
PHP+Ajax无刷新文件上传代码,有进度条功能,支持图片、压缩包、视频等大文件上传
带进度条的文件上传 使用 php 和 ajax 进行简单的文件上传 使用的技术: PHP, Jquery, Ajax 对于演示,请单击此链接