上传进度支持(Upload progress in sessions)
来源:互联网 发布:质量管理矩阵图模版 编辑:程序博客网 时间:2024/06/07 12:56
作者: Laruence
本文地址: http://www.laruence.com/2011/10/10/2217.html
文件上传进度反馈, 这个需求在当前是越来越普遍, 比如大附件邮件. 在PHP5.4以前, 我们可以通过APC提供的功能来实现. 或者使用PECL扩展uploadprogress来实现.
虽然说, 它们能很好的解决现在的问题, 但是也有很明显的不足:
- 1. 他们都需要额外安装(我们并没有打算把APC加入PHP5.4)
- 2. 它们都使用本地机制来存储这些信息, APC使用共享内存, 而uploadprogress使用文件系统(不考虑NFS), 这在多台前端机的时候会造成麻烦.
正因为此, Arnaud Le Blanc提出了针对Session报告上传进度的RFC, 并且现在实现也已经包含在了PHP5.4的主干中.
这个新特性, 提供了一些新的INI配置, 他们和APC的相关配置很类似:
- session.upload_progress.enabled[=1] : 是否启用上传进度报告(默认开启)
- session.upload_progress.cleanup[=1] : 是否在上传完成后及时删除进度数据(默认开启, 推荐开启).
- session.upload_progress.prefix[=upload_progress_] : 进度数据将存储在_SESSION[session.upload_progress.prefix . _POST[session.upload_progress.name]]
- session.upload_progress.name[=PHP_SESSION_UPLOAD_PROGRESS] : 如果_POST[session.upload_progress.name]没有被设置, 则不会报告进度.
- session.upload_progress.freq[=1%] : 更新进度的频率(已经处理的字节数), 也支持百分比表示’%’.
- session.upload_progress.min_freq[=1.0] : 更新进度的时间间隔(秒级)
<form action="upload.php" method="POST" enctype="multipart/form-data"> <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="laruence" /> <input type="file" name="file1" /> <input type="file" name="file2" /> <input type="submit" /> </form>如果我们上传一个足够大的文件(网速要是足够慢就更好:P), 我们就可以从_SESSION中, 得到类似下面的进度信息:
$_SESSION["upload_progress_laruence"] = array( "start_time" => 1234567890, // 请求时间 "content_length" => 57343257, // 上传文件总大小 "bytes_processed" => 453489, // 已经处理的大小 "done" => false, // 当所有上传处理完成后为TRUE "files" => array( 0 => array( "field_name" => "file1", // 表单中上传框的名字 // The following 3 elements equals those in $_FILES "name" => "foo.avi", "tmp_name" => "/tmp/phpxxxxxx", "error" => 0, "done" => true, // 当这个文件处理完成后会变成TRUE "start_time" => 1234567890, // 这个文件开始处理时间 "bytes_processed" => 57343250, // 这个文件已经处理的大小 ), // An other file, not finished uploading, in the same request 1 => array( "field_name" => "file2", "name" => "bar.avi", "tmp_name" => NULL, "error" => 0, "done" => false, "start_time" => 1234567899, "bytes_processed" => 54554, ), ) );Johannes的blog也介绍过: http://schlueters.de/blog/archives/151-Upload-Progress-in-PHP-trunk.html
- 上传进度支持(Upload progress in sessions)
- PHP5.4上传进度支持(Upload progress in sessions)
- PHP 原生 上传进度支持(Upload progress in sessions)
- AFNetworking 3.0 上传图片 进度progress显示
- 掌控上传进度的Ajax Upload
- 掌控上传进度的AJAX Upload
- 掌控上传进度的AJAX Upload
- 掌控上传进度的AJAX Upload
- hadoop FileSystem 重写 Progress 方法获取文件上传总进度
- ahxu-commons-upload-beta2显进度上传组件beta2发布
- 利用fileupload组件实现掌控上传进度的AJAX Upload
- 掌控上传进度的AJAX Upload(转贴)
- 掌控上传进度的AJAX Upload(源代码下载)
- Nginx初步-3:使用nginx-upload-module显示上传进度
- AJAX File upload Progress
- SlickUpload(Upload Progress Bar)
- nginx-upload-progress
- C#上传控件 支持进度 速度
- tips
- 设置产生的归档日志保存位置
- .net WinForm下从datagridview中取值,通过Zedgraph作折线图
- iPhone Like Toolbar for Android
- 在MFC中从一个线程工作函数中向窗口发送消息(this指针的妙用)
- 上传进度支持(Upload progress in sessions)
- win7+ oracle +php环境的搭建
- jsp使用cookie实现记住密码的功能
- PRD文档的编写
- Oracle临时表游标未释放导致回滚段空间不足的解决方案
- RFID—MFRC522 win32驱动
- 如何处理高并发情况下的DB插入
- linux基础——(二)shell
- DoDataExchange()