<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="PHP的Session结合Javascript实现文件上传带进度条功能的示例代码" id="card1">
<p> 游客</p><p>
标题:PHP的Session结合Javascript实现文件上传带进度条功能的示例代码<br/>
正文:<br/>
Web应用中常需要提供文件上传的功能。典型的场景包括用户头像上传、相册图片上传等。当需要上传的文件比较大的时候，提供一个显示上传进度的进度条就很有必要了。在PHP 5.4以前，实现这样的进度条并不容易，主要有三种方法:1.使用Flash, Java, ActiveX2.使用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 = &amp;quot;1&amp;quot; session.upload_progress.cleanup = &amp;quot;1&amp;quot; session.upload_progress.prefix = &amp;quot;upload_progress<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1879&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1879&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1879&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1879&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1879&amp;Page=7">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1879">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1879">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>