PHP上传进度支持(Upload progress in sessions)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP上传进度支持(Upload progress in sessions)相关的知识,希望对你有一定的参考价值。

文件上传进度反馈, 这个需求在当前是越来越普遍, 比如大附件邮件. 在php5.4以前, 我们可以通过APC提供的功能来实现. 或者使用PECL扩展uploadprogress来实现。

从PHP的角度来说, 最好的储存这些信息的地方应该是SESSION, 首先它是PHP原生支持的机制. 其次, 它可以被配置到存放到任何地方(支持多机共享)。

 这个新特性, 提供了一些新的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] : 更新进度的时间间隔(秒级)

对于如下的上传表单:

如果我们上传一个足够大的文件(网速要是足够慢就更好:P), 我们就可以从_SESSION中, 得到类似下面的进度信息:

 

以上是关于PHP上传进度支持(Upload progress in sessions)的主要内容,如果未能解决你的问题,请参考以下文章

浅谈PHP_SESSION_UPLOAD_PROGRESS和条件竞争的巧妙利用

Upload上传,:on-progress失效问题

PHP利用Session实现上传进度

使用jquery.form.js实现文件上传及进度条前端代码

如何在jquery中计算文件上传进度?

element el-upload自定义上传显示进度条,多文件上传进度