PHP基础教程之PHP文件上传进度处理

上传人:Z****9 文档编号:36838702 上传时间:2018-04-03 格式:PDF 页数:7 大小:129.57KB
返回 下载 相关 举报
PHP基础教程之PHP文件上传进度处理_第1页
第1页 / 共7页
PHP基础教程之PHP文件上传进度处理_第2页
第2页 / 共7页
PHP基础教程之PHP文件上传进度处理_第3页
第3页 / 共7页
PHP基础教程之PHP文件上传进度处理_第4页
第4页 / 共7页
PHP基础教程之PHP文件上传进度处理_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《PHP基础教程之PHP文件上传进度处理》由会员分享,可在线阅读,更多相关《PHP基础教程之PHP文件上传进度处理(7页珍藏版)》请在金锄头文库上搜索。

1、 http:/www.mobiletrain.org/ 北京千锋互联科技有限公司 版权所有 PHPPHP 基础教程之基础教程之 PHPPHP 文件上传进度处理文件上传进度处理 当文件过大,或者用户网络状态一般,通常上传过程需要一段时间,如果这时候让用户白屏等待的话,相信大部分用户都会直接关掉应用,所以一个监控上传进度,并实时向用户报告的需求就被产品汪摆在了桌面上。 一个高逼格的上传进度提示, 会让你的应用瞬间变成被仰望的存在。 PHP 在 5.4 之前,总是需要安装额外的扩展才能监控到文件上传进度。而从 5.4 开始,引入 session.upload_progress 的新特性,我们只需要在

2、 php.ini 中开启配置,即可通过session 监控文件上传进度。在 php.ini 中。 注意:本章学习需要有注意:本章学习需要有 sessionsession 基础和基础和 javascriptjavascript 和和 ajaxajax 基础。基础。 我们需要配置,注意查看和修改 php.ini 文件: 配置项配置项 说明说明 session.upload_progress.enabled 是否启用上传进度报告(默认开启) 1 为开启,0 为关闭 session.upload_progress.cleanup 是否在上传完成后及时删除进度数据(默认开启, 推荐开启) session

3、.upload_progress.prefix=upload_progress_ 进度数据将存储在_SESSIONsession.upload_progress.prefix . _POSTsession.upload_progress.name session.upload_progress.name=PHP_SESSION_UPLOAD_PROGRESS 如果_POSTsession.upload_progress.name没有被设置, 则不会报告进度. http:/www.mobiletrain.org/ 北京千锋互联科技有限公司 版权所有 配置项配置项 说明说明 session.upl

4、oad_progress.freq=1% 更新进度的频率(已经处理的字节数), 也支持百分比表示%. session.upload_progress.min_freq=1.0 更新进度的时间间隔(秒级) 开启了配置, 我们可以通过 session, 来记录一个完整的文件上传进度。 在 session 中,会出现一个如下结果的数组: 1. $_SESSION“upload_progress_test“ = array( 2. /请求时间 3. “start_time“ = 1234567890, 4. / 上传文件总大小 5. “content_length“ = 57343257, 6. /已

5、经处理的大小 7. “bytes_processed“ = 453489, 8. /当所有上传处理完成后为 TRUE,未完成为 false 9. “done“ = false, 10. 11. “files“ = array( 12. 0 = array( 13. /表单中上传框的名字 14. 15. “field_name“ = “file1“, 16. 17. /上传文件的名称 18. “name“ = “test1.avi“, 19. 20. /缓存文件,上传的文件即保存在这里 21. “tmp_name“ = “/tmp/phpxxxxxx“, http:/www.mobiletrai

6、n.org/ 北京千锋互联科技有限公司 版权所有 22. 23. /文件上传的错误信息 24. “error“ = 0, 25. 26. /是否上传完成,当这个文件处理完成后会变成 TRUE 27. “done“ = true, 28. 29. /这个文件开始处理时间 30. “start_time“ = 1234567890, 31. 32. /这个文件已经处理的大小 33. “bytes_processed“ = 57343250, 34. ), 35. 36. 1 = array( 37. “field_name“ = “file2“, 38. “name“ = “test2.avi“,

7、 39. “tmp_name“ = NULL, 40. “error“ = 0, 41. “done“ = false, 42. “start_time“ = 1234567899, 43. “bytes_processed“ = 54554, 44. ), 45. ) 46. ); 这个数组详细记录了文件上传的进度,已经处理完的文件状态为 true。下面,我们通过一个 jQuery 的 AJAX 实例,来学习一下文件上传进度的流程。 http:/www.mobiletrain.org/ 北京千锋互联科技有限公司 版权所有 首先,在表单中,需要添加一个 type=hidden 的 input

8、标签,标签 value 为自定义(建议使用有一定意义的值,因为这个值将要在后台用到) 1. 2. “ value=“test“ / 3. 4. 5. 6. 7. 0% 8. 这里,添加了一个 ID 为 progress 的 div,作为展示上传进度的容器。我们通过 js 的setTimeout(), 定时执行 ajax 来获取文件上传进度, 后台文件返回文件上传的进度百分比。 1. 2. 3. function fetch_progress() 4. $.get(progress.php, : test, function(data) 5. var progress = parseInt(da

9、ta); 6. $(#progress .label).html(progress + %); 7. if(progress 上面这段代码,就是通过 JQ 的 ajax,每 0.1 秒返回一次文件上传进度。并把进度百分比在 div 标签中显示。 后台代码, 需要分为两个部分, upload.php 处理上传文件。 progress.php 获取 session中的上传进度,并返回进度百分比。 这里文件上传就不再赘述,详细步骤参见上文,upload.php: 1. 主要关注 progress.php: http:/www.mobiletrain.org/ 北京千锋互联科技有限公司 版权所有 1. 到这里,文件进度的代码就已经完成了,配合前端,我们就可以做一个炫酷的文件上传功能啦!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号