首页 > 其他分享 >上传文件的进度条

上传文件的进度条

时间:2022-08-28 20:33:20浏览次数:77  
标签:uploaded 文件 name 进度条 upload session key progress 上传

想做一个上传文件的进度条,求大神看~ - ThinkPHP框架  https://www.thinkphp.cn/topic/8630.html

这是不用thinkphp框架写的
index.php文件

  1. <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
  2. <form id="upload-form"
  3.     action="upload.php" method="POST" enctype="multipart/form-data"
  4.     style="margin:15px 0" target="hidden_iframe">
  5.  
  6.         <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="test" />
  7.         <p><input type="file" name="file1" /></p> 
  8.         <p><input type="submit" value="Upload" /></p>
  9. </form>     
  10.  
  11. <iframe id="hidden_iframe" name="hidden_iframe" src="about:blank" style="display:none;"></iframe>
  12.  
  13. <div id="progress" class="progress" style="margin-bottom:15px;display:none;">
  14.         <div class="bar" style="width:0%;"></div>
  15.         <div class="label">0%</div>
  16. </div>
  17. <script>
  18.         function fetch_progress(){
  19.             $.get('progress.php',{ '<?php echo ini_get("session.upload_progress.name"); ?>' : 'test'}, function(data){
  20.                     var progress = parseInt(data);
  21.      
  22.                     $('#progress .label').html(progress + '%');
  23.                     $('#progress .bar').css('width', progress + '%');
  24.      
  25.                     if(progress < 100){
  26.                             setTimeout('fetch_progress()', 100);
  27.                     }else{
  28.                 $('#progress .label').html('完成!');
  29.             }
  30.             }, 'html');
  31.     }
  32.      
  33.     $('#upload-form').submit(function(){
  34.             $('#progress').show();
  35.             setTimeout('fetch_progress()', 100);
  36.     });
  37. </script>
复制代码 upload.php文件
  1. <?php
  2. if(is_uploaded_file($_FILES['file1']['tmp_name'])){
  3.         move_uploaded_file($_FILES['file1']['tmp_name'], "./{$_FILES['file1']['name']}");
  4. }
  5. ?>
复制代码 progress.php文件
  1. <?php
  2. session_start();
  3.  
  4. $i = ini_get('session.upload_progress.name');
  5.  
  6. $key = ini_get("session.upload_progress.prefix") . $_GET[$i];
  7.  
  8. if (!empty($_SESSION[$key])) {
  9.         $current = $_SESSION[$key]["bytes_processed"];
  10.         $total = $_SESSION[$key]["content_length"];
  11.         echo $current < $total ? ceil($current / $total * 100) : 100;
  12. }else{
  13.         echo 100;
  14. }
  15. ?>
复制代码 在xmapp中测试是成功的 能够看到从1%变到100% 本地测试要文件够大哈,
php.ini中的配置也是修改好的。
然后是在thinkphp中配置 action是这样的
  1. <?php
  2. // 本类由系统自动生成,仅供测试用途
  3. class AddnewsAction extends Action {
  4.     public function index(){
  5.         $this->display();
  6.     }
  7.     public function uploadvideo(){
  8.         if(is_uploaded_file($_FILES['file1']['tmp_name']))
  9.           {
  10.               echo ("$file is uploaded via HTTP POST");
  11.               }
  12.             else
  13.               {
  14.               echo ("$file is not uploaded via HTTP POST");
  15.           }
  16.         
  17.         if(is_uploaded_file($_FILES['file1']['tmp_name'])){
  18.                 move_uploaded_file($_FILES['file1']['tmp_name'], "./{$_FILES['file1']['name']}");
  19.         }    
  20.     }
  21.     public function progress(){
  22.         session_start();
  23.          
  24.         $i = ini_get('session.upload_progress.name');
  25.          
  26.         $key = ini_get("session.upload_progress.prefix") . $_GET[$i];
  27.          
  28.         if (!empty($_SESSION[$key])) {
  29.                 $current = $_SESSION[$key]["bytes_processed"];
  30.                 $total = $_SESSION[$key]["content_length"];
  31.                 echo $current < $total ? ceil($current / $total * 100) : 100;
  32.         }else{
  33.                 echo 100;
  34.         }
  35.     }
  36.     
  37. }
复制代码 页面代码当然还是和那个差不多只是修改了地址;

但是功能却不能实现了
通过progress()返回的数据直接是100;
通过测试发现那个是session中的值是空的;
不知道为什么。是因为thinkphp的原因?
我是通过

标签:uploaded,文件,name,进度条,upload,session,key,progress,上传
From: https://www.cnblogs.com/jmbt/p/16633574.html

相关文章