您的位置:

php与js实现进度条的操作,php上传进度条

本文目录一览:

php 怎么做进度条

一般来说,很少会有人直接用PHP输出

进度条

,但是也是可以实现的(需要JS)。

原理和过程:

利用flush函数会提前输出缓冲区内容;

内容是主要的进度条;

循环》

输出改变内容的JS;

暂停一秒,继续循环;

所有的输出都要先放到缓冲区的,直接echo的输出是等到页面结束才输出。

用户的函数:

sleep()

ob_start()

ob_flush()

flush()

ob_implicit_flush();

具体的代码就不写了,要自己动手哦,百度下每个函数的意思,加深理解和记忆。

PHP中使用Session配合Javascript实现文件上传进度条功能

Web应用中常需要提供文件上传的功能。典型的场景包括用户头像上传、相册图片上传等。当需要上传的文件比较大的时候,提供一个显示上传进度的进度条就很有必要了。

在PHP

5.4以前,实现这样的进度条并不容易,主要有三种方法:

1.使用Flash,

Java,

ActiveX

2.使用PHP的APC扩展

3.使用HTML5的File

API

第一种方法依赖第三方的浏览器插件,通用性不足,且易带来安全隐患。不过由于Flash的使用比较广泛,因此还是有很多网站使用Flash作为解决方案。

第二种方法的不足在于,它需要安装PHP的APC扩展库,要求用户能够控制服务器端的配置。另外,如果安装APC仅仅是为了实现一个上传进度条,那么显然有点杀鸡用牛刀的意思。

第三种方法应该是最为理想的方法,不需要服务器端的支持,仅在浏览器端使用Javascript即可。但是由于HTML5标准尚未确立,各浏览器厂商的支持也不相同,所以暂时这种方法还难以普及。

PHP

5.4中引入的基于session的上传进度监视功能(session.upload_progress),它提供了一个服务器端的上传进度监视解决方案。升级到PHP

5.4之后,可以不必安装APC扩展,仅使用原生PHP和前端的Javascript即可实现上传进度条。

下面我们就详细介绍一下

PHP

5.4

的这个

session.upload_progress

新特性。

原理介绍

当浏览器向服务器端上传一个文件时,PHP将会把此次文件上传的详细信息(如上传时间、上传进度等)存储在session当中。然后,随着上传的进行,周期性的更新session中的信息。这样,浏览器端就可以使用Ajax周期性的请求一个服务器端脚本,由该脚本返回session中的进度信息;浏览器端的Javascript即可根据这些信息显示/更新进度条了。

那么,文件上传信息具体是如何存储的?我们要如何访问它呢?下面我们来详细说明。

PHP

5.4

中引入了一些配置项(在php.ini中进行设置)

复制代码

代码如下:

session.upload_progress.enabled

=

"1"

session.upload_progress.cleanup

=

"1"

session.upload_progress.prefix

=

"upload_progress_"

session.upload_progress.name

=

"PHP_SESSION_UPLOAD_PROGRESS"

session.upload_progress.freq

=

"1%"

session.upload_progress.min_freq

=

"1"

其中enabled控制upload_progress功能的开启与否,默认开启;cleanup

则设置当文件上传的请求提交完成后,是否清除session的相关信息,默认开启。

prefix

name

两项用来设置进度信息在session中存储的变量名/键名。关于这两项的详细使用见下文。

freq

min_freq

两项用来设置服务器端对进度信息的更新频率。合理的设置这两项可以减轻服务器的负担。

在上传文件的表单中,需要为该次上传设置一个标识符,并在接下来的过程中使用该标识符来引用进度信息。具体的,在上传表单中需要有一个隐藏的input,它的name属性为php.ini中

session.upload_progress.name

的值;它的值为一个由你自己定义的标识符。如下:

复制代码

代码如下:

input

type="hidden"

name="?php

echo

ini_get('session.upload_progress.name');

?"

value="test"

/

接到文件上传的表单后,PHP会在$_SESSION变量中新建键,键名是一个将session.upload_progress.prefix的值与上面你自定义的标识符连接后得到的字符串,可以这样得到:

复制代码

代码如下:

$name

=

ini_get('session.upload_progress.name');

$key

=

ini_get('session.upload_progress.prefix')

.

$_POST[$name];

$_SESSION[$key];

//

这里就是此次文件上传的进度信息了

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与js实现进度条的操作,php上传进度条

2022-11-22
php实现简单的进度条(php上传进度条)

2022-11-16
php上传进度条,文件上传显示进度条

2022-11-24
php循环实时进度条,php文件上传进度条

2022-11-30
php上传大文件进度条(文件上传进度条实现)

2022-11-09
js实现文件下载显示进度条(js 文件上传进度)

本文目录一览: 1、js高手处理网站每页加载时显示进度条 2、文件下载如何使用进度条? 3、关于js或jquery进度条实现? 4、JS程序 图片(即进度条)加载 5、JS做的进度条,如何做的? 6、

2023-12-08
php上传图片进度条,php上传图片并显示

2023-01-04
php项目进度统计,php统计系统

2023-01-05
php第三节笔记,php读书笔记

2022-12-02
js可以控制文件上传的速度吗,js 文件上传进度

本文目录一览: 1、如何使用javascript 控制图片的速度 2、浏览器会限制js上传文件大小吗 3、js 大文件分片上传处理如何实现? 4、前端上传文件实时显示进度条和上传速度的工作原理是怎样的

2023-12-08
php教程笔记复习1(细说php读书笔记)

2022-11-10
php数组查找上一条与下一条,php数组查找上一条与下一条的

2022-11-30
php新手笔记,php初学者

2022-11-19
php基础学习笔记下,细说php读书笔记

2022-11-18
学习php随笔,PHP笔记

2022-11-25
js实现多个进度条实例(js做进度条)

本文目录一览: 1、如何用js实现游戏倒计时进度条效果 2、怎么编程javascript进度条 3、JS做的进度条,如何做的? 4、JS实现点击提交表单后,出现一个进度条 5、js代码执行绑定进度条

2023-12-08
php面试上机操作,php程序员面试笔试宝典

2023-01-06
php语言学习笔记,Php语法

2022-11-18
php编程笔记的个人空间(php鸟哥博客)

2022-11-10
php折腾记(php笔记)

2022-11-15