怎么在PHP中利用会话。upload_progress实现一个文件上传进度显示功能

  介绍

这篇文章给大家介绍怎么在PHP中利用会话。upload_progress实现一个文件上传进度显示功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>开启session.upload_progress

修改php . ini文件,开启会话。upload_progress的支持。

session.upload_progress.enabled =,   session.upload_progress.cleanup =,   时间=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“

对于PHP语言,这应该是最好的解决方案了,因为这种方式依赖于PHP内部的会议机制,开始上传文件创建相关会话以便读取,文件上传完成就会销毁session.html5的文件上传的api也可以显示上传进度,但是对IE的10以下的版本没法使用,所以兼容性不太好。

接下来,我们通过一个例子,实现以下相关效果。

<强>修改PHP上传文件限制

. ini默认的上传文件大小上限为2 M,然而我们既然需要显示文件上传进度,肯定都是要能够上传比较大的文件。尤其我们在本地服务器上测试的时候,因为服务器保存的路径是在本地磁盘上,所以文件上传就相当于在磁盘上复制,速度很快,我们想要比较直观的看到上传进度的显示,就需要上传一个比较大的文件,我在测试的时候,上传的是一个400多米的压缩包。

可以通过下面的PHP。ini的配置,调整上传文件大小的限制(以上限500为例)

upload_max_filesize =, 500,,//上传文件的最大值,还可以调更大   post_max_size =, 500,,,,,//发布方式传递过来数据最大值,还可以调更大   时间=max_execution_time  1800;,//页面最大执行时间,已经设置为最大值   时间=max_input_time  1800;,//解析传入数据最大执行时间,已经设置为最大值   时间=memory_limit  128;,,//每个页面消耗的最大内存,已经设置为最大值

<强>实例程序

首先放上最简单的部分,上传文件转存程序

上传。php

& lt; php ?   如果收取(带有_file美元[& # 39;演示# 39;])){   tmp=美元才能爆炸(“干净,带有_file美元[& # 39;演示# 39;][& # 39;名字# 39;]);   suffix_name 美元;=,才能结束(tmp);=美元才能name 拖延时间()!”干净。suffix_name美元;   时间=美元才能path  __DIR__ !”\ \“。美元名称;   函数的才能(带有_file美元[& # 39;演示# 39;][& # 39;tmp_name& # 39;],美元路径);   echo 才能“upload  success";   其他}{   echo 才能“error";   }

然后是前台获取上传文件百分数的接口文件

进步。php

& lt; php ?   session_start ();   $ key =, ini_get (“session.upload_progress.prefix"),只$ _GET [“key"];   if (!空($ _SESSION [$ key])), {   时间=美元才能current  $ _SESSION [$ key] [“bytes_processed"];   时间=美元才能total  $ _SESSION [$ key] [“content_length"];   echo 才能;current 美元;& lt;, total 美元;?,装天花板(current 美元/,total 美元;*,100),:,100;   其他}{   echo 才能;100;   }

最后是前台的上传文件界面

索引。html

& lt; ! DOCTYPE  html>   & lt; html  lang=癳n"祝辞   & lt; head>   & lt;才能meta  charset=癠TF-8"比;   & lt;才能title>上传文件示例程序& lt;/title>   & lt;/head>   & lt; body>   & lt; div  id=癴ileUpload"祝辞   & lt;才能form  id=皍pload-form", action=皍pload.php",方法=皃ost", enctype=岸嗖糠?form-data",目标=癶idden_iframe"比;   ,,,& lt; p>   ,,,,,& lt; input 类型=癶idden", name=癙HP_SESSION_UPLOAD_PROGRESS",价值=https://www.yisu.com/zixun/" file1 "/>         
  上传进度: