×

php获取上传进度条

php获取上传进度条(php文件上传进度条)

admin admin 发表于2023-04-03 17:43:10 浏览47 评论0

抢沙发发表评论

本文目录一览:

thinkphp3.2.3上传文件显示进度

因为上述操作包含了上传文件的操作,而普通ajax无法实现文件上传,经过百度有使用FormData对象与插件这两种方法,详见前一篇转载的博文,于是我就尝试了一下FormData对象的方法。

情景:我要利用thinkPHP3.2.3框架实现增加商品时对其输入数据合法性的验证之后到前台提示,一开始是通过内置的跳转函数实现的跳转提示,会跳到一个页面显示再返回,这样给人的视觉体验很不好,于是想修改为ajax方式来实现异步更新数据而不刷新此页面,也不离开此页面,而是通过alert弹出警告框来提示用户输入数据的合法性与否。因为商品的表单数据中包含文件,所以一开始使用ajax时使用jquery内置的收集数据的方法:$("form").serialize(); 但是它不支持文件数据的收集,于是百度后就尝试使用FormData加上ajax来实现表单的异步提交并实现文件的上传。

首先在控制器就要修改执行成功或失败时的跳转函数,如

$this-success('添加成功!',U('listGoods'),true);

$this-error('添加失败!',U('add'),true);

细心的同学应该发现了跟以前写的有不同之处吧,就是多给了一个参数,默认是false,设置为true时表明表单是使用ajax提交的,从而不执行跳转,而是返回json格式的数据如下:

{"info":"\u6dfb\u52a0\u6210\u529f\uff01","status":1,"url":"\/shop\/index.php\/Admin\/Goods\/listGoods.html"}-php获取上传进度条

{"info":"\u6dfb\u52a0\u6210\u529f\uff01","status":0,"url":"\/shop\/index.php\/Admin\/Goods\/listGoods.html"}-php获取上传进度条

这样就可以在前台的ajax执行的success回调函数内部获取数据,status=1表示成功,status=0表示失败。

一开始使用的方法代码如下:

function testAjax(){

var formData = new FormData(document.getElementById("addForm"));

$.ajax({

url:"__SELF__",

type:"post",

data:formData,

dataType: 'json',

processData:false,// 告诉jQuery不要去处理发送的数据

contentType:false,// 告诉jQuery不要去设置Content-Type请求头

success:function(data){

window.clearInterval(timer);

console.log("over...");

//判断是否添加成功

if(data.status == 1){

alert(data.info);

location.href = data.url;

}

else{

alert(data);

}

},

error:function(e){

alert("错误");

window.clearInterval(timer);

}

});

get();//此处为上传文件的进度条

}

正常情况下是不跳转的,但是我猜应该是使用了FormData对象的缘故,导致ajax执行回调函数后,一直自行跳到一个空白界面显 示返回的json格式的提示信息。这样的效果显然不是我要的,于是就开始测试,看到底是哪里出错了,最后发现确实没法控制它, 正一筹莫展时突然发现现在使用的是绑定了提交按钮的onclick事件,我猜会不会是这个原因,反正改一下也没关系,于是将其改成 限制通过按钮提交表单的方法来实现果然不自行跳转了,真的激动啊!!这时明白最关键原因应该跟FormData无关了,其实就是提 交方式的原因导致的。-php获取上传进度条

我想做一个视频网站,请问如何显示上传视频的百分比进度,谢谢! - PHP进阶讨论

最简便的方式就是用FLASH ,它本身在前台就台打开本地文件,上传,取得进度,无需任何后台的配置,后台只管接收文件就可以了,PHP5.2可以是可以,不过有很麻烦的一面,和通用性上也有一定限制和调试的时间,建议选FLASH AS-php获取上传进度条

php显示进度条

如果确实想精确的处理下载进度条的话,两种方案:

第一种是需要用socket保持与客户端通信,返回已下载的数据大小,然后可以显示下载速度,以及进度条之类。

第二种是php与flash交互,显示进度条。

否则的可以显示一个模拟进度条,如果满足需求的话。

满意请采纳。

PHP进度条

解决思路:

任务分两种,一个是总进度,也就是任务队列,用一个array保存起来

还有一个就是任务的进度,如,当前任务完成了多少

用一个参数来指示当前进度,如currentTask,再用两个参数来指示当前正在执行任务的任务进度,比如导出数据,用begin和end来表示当前导出的是从begin到end之间的记录数

每次任务执行完之后再把begin和end同时在加上增量,再让浏览器跳转一下,这样就可以调到下一步继续执行了,每当在执行当前任务结束时,将CurrentTask向后指示,继续任务队列中的任务

以上用到的参数都是用querystring来保存的,包括任务队列信息,也可以用临时文件来保存

大神,ThinkPHP 上传文件进度条怎么实现的

Web Uploader

这个插件是百度出的,有进度条,兼容ie7及以上。

原理就是ajax上传,会返回1-100的数值,根据这个值来操作进度条。如果还有不明白的话,你可以在后盾人看看视频找找答案,有空多看看时间长了,慢慢就明白了,希望能帮到你,给个采纳吧谢谢

php中怎么实现读取数据进度条功能?

?php//防止执行超时set_time_limit(0);//清空并关闭输出缓存ob_end_clean();//需要循环的数据for($i = 0; $i 188; $i++){ $users[] = 'Tom_' . $i;}//计算数据的长度$total = count($users);//显示的进度条长度,单位 px$width = 500;//每条记录的操作所占的进度条单位长度$pix = $width / $total;//默认开始的进度条百分比$progress = 0;?htmlheadtitle动态显示服务器运行程序的进度条/titlemeta http-equiv="Content-Type" content="text/html; charset=utf-8" /stylebody,div input { font-family: Tahoma; font-size: 9pt}/stylescript language="JavaScript" !-- function updateProgress(sMsg, iWidth) { document.getElementById("status").innerHTML = sMsg; document.getElementById("progress").style.width = iWidth + "px"; document.getElementById("percent").innerHTML = parseInt(iWidth / ?php echo $width; ? * 100) + "%"; } -- /script/headbody div style="margin:50px auto; padding: 8px; border: 1px solid gray; background: #EAEAEA; width: ?php echo $width+8; ?px" div style="padding: 0; background-color: white; border: 1px solid navy; width: ?php echo $width; ?px" div id="progress" style="padding: 0; background-color: #FFCC66; border: 0; width: 0px; text-align: center; height: 16px"/div /div div id="status"/div div id="percent" style="position: relative; top: -30px; text-align: center; font-weight: bold; font-size: 8pt"0%/div /div?phpflush(); //将输出发送给客户端浏览器foreach($users as $user){ // 在此处使用空循环模拟较为耗时的操作,实际应用中需将其替换; // 如果你的操作不耗时,我想你就没必要使用这个脚本了 :) for($i = 0; $i 1000000; $i++) { } ?script language="JavaScript" updateProgress("正在操作用户 ?php echo $user; ? ....", ?php echo min($width, intval($progress)); ?);/script?php flush(); //将输出发送给客户端浏览器,使其可以立即执行服务器端输出的 JavaScript 程序。 $progress += $pix;} //end foreach?script language="JavaScript" //最后将进度条设置成最大值 $width,同时显示操作完成 updateProgress("操作完成!", ?php echo $width; ?);/script?phpflush();?/body/html-php获取上传进度条