亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > PHP基于session.upload_progress 實現文件上傳進度顯示功能詳解

PHP基于session.upload_progress 實現文件上傳進度顯示功能詳解

熱門標簽:外呼系統撥打暫時無法接通 仁和怎么申請400開頭的電話 廣東地市地圖標注 江西手機自動外呼防封系統是什么 長春人工外呼系統服務商 怎么向銷售公司推銷外呼系統 高德地圖標注家 哪里辦理400電話 廣州防封卡外呼系統多少錢一個月

本文實例講述了PHP基于session.upload_progress 實現文件上傳進度顯示功能。分享給大家供大家參考,具體如下:

介紹

session.upload_progress 是PHP5.4的新特征。

當 session.upload_progress.enabled INI 選項開啟時,PHP 能夠在每一個文件上傳時監測上傳進度。 這個信息對上傳請求自身并沒有什么幫助,但在文件上傳時應用可以發送一個POST請求到終端(例如通過XHR)來檢查這個狀態。

當一個上傳在處理中,同時POST一個與INI中設置的session.upload_progress.name同名變量時,上傳進度可以在$_SESSION中獲得。 當PHP檢測到這種POST請求時,它會在$_SESSION中添加一組數據, 索引是session.upload_progress.prefix與 session.upload_progress.name連接在一起的值。

開啟session.upload_progress

修改php.ini文件,開啟session.upload_progress的支持。

session.upload_progress.enabled = On
session.upload_progress.cleanup = On
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機制,開始上傳文件創建相關session以便讀取,文件上傳完成就會銷毀session。html5的文件上傳api也可以顯示上傳進度,但是對IE的10以下的版本沒法使用,所以兼容性不太好。

接下來,我們通過一個例子,實現以下相關效果。

修改php上傳文件限制

php.ini默認的上傳文件大小上限為2M,然而我們既然需要顯示文件上傳進度,肯定都是要能夠上傳比較大的文件。尤其我們在本地服務器上測試的時候,因為服務器保存的路徑是在本地磁盤上,所以文件上傳就相當于在磁盤上復制,速度很快,我們想要比較直觀的看到上傳進度的顯示,就需要上傳一個比較大的文件,我在測試的時候,上傳的是一個400多M的壓縮包。

可以通過下面的php.ini的配置,調整上傳文件大小的限制(以上限500M為例)

upload_max_filesize = 500M; //上傳文件的最大值,還可以調更大
post_max_size = 500M;    //post方式傳遞過來數據最大值,還可以調更大
max_execution_time = 1800; //頁面最大執行時間,已經設置為最大值
max_input_time = 1800; //解析傳入數據最大執行時間,已經設置為最大值
memory_limit = 128M;  //每個頁面消耗的最大內存,已經設置為最大值

實例程序

首先放上最簡單的部分,上傳文件轉存程序

upload.php

?php
if(isset($_FILES['demo'])){
  $tmp=explode(".",$_FILES['demo']['name']);
  $suffix_name = end($tmp);
  $name = time().".".$suffix_name;
  $path = __DIR__."\\".$name;
  move_uploaded_file($_FILES['demo']['tmp_name'],$path);
  echo "upload success";
}else{
  echo "error";
}

然后是前臺獲取上傳文件百分數的接口文件

progress.php

?php
session_start();
$key = ini_get("session.upload_progress.prefix") . $_GET["key"];
if (!empty($_SESSION[$key])) {
  $current = $_SESSION[$key]["bytes_processed"];
  $total = $_SESSION[$key]["content_length"];
  echo $current  $total ? ceil($current / $total * 100) : 100;
}else{
  echo 100;
}

最后是前臺的上傳文件界面

index.html

!DOCTYPE html>
html lang="en">
head>
  meta charset="UTF-8">
  title>上傳文件示例程序/title>
/head>
body>
div id="fileUpload">
  form id="upload-form" action="upload.php" method="post" enctype="multipart/form-data" target="hidden_iframe">
    p>
      input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="file1" />
      input type="file" name="demo">
      input type="submit" value="上傳">
    /p>
  /form>
/div>
iframe name="hidden_iframe" src="about:blank" style="display:none;">/iframe>
div id="process">
  上傳進度:span id="percent">/span>
/div>
/body>
script src="http://apps.bdimg.com/libs/jquery/1.6.4/jquery.min.js">/script>
script>
  function fetch_progress(){
    $.get('progress.php',{"key":"file1"}, function(data){
      document.getElementById("percent").innerText = data+"%";
      if(data == 100){
        return;
      }else{
        setTimeout(fetch_progress,100);
      }
    });
  }
  $('#upload-form').submit(function(){
    setTimeout(fetch_progress,100);
  });
/script>
/html>

在前臺頁面,通過form的target屬性,將提交之后的頁面指向了該頁的iframe,避免了頁面的跳轉。

總結

php.ini默認配置的上傳文件大小是2M,我們上傳文件通常是需要修改一下配置文件使用的。

從php5.4開始,通過php.ini配置session.upload_progress之后,文件上傳時,就會創建key為session.upload_progress.prefix+session.upload_progress.name的session。其中session.upload_progress.prefix是配置文件中定義的,session.upload_progress.name需要在form表單提交時,一并提交才可以。

文件開始上傳,創建session,上傳過程中,session文件中保存了以上傳字節數和總字節數,可以以及計算得到上傳文件百分比,在上傳完成之后,該session會被銷毀。

bootstrap樣式的進度條

index.html加上bootstrap的進度條樣式,頓時高大上多了,哈哈

!DOCTYPE html>
html lang="en">
head>
  meta charset="UTF-8">
  title>上傳文件示例程序/title>
  link rel="stylesheet"  rel="external nofollow" >
  script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js">/script>
  script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js">/script>
/head>
body>
div style="width: 400px;margin-top: 30px;margin-left: 30px;">
  div id="fileUpload">
    form class="form-horizontal" role="form" id="upload-form" action="upload.php" method="post" enctype="multipart/form-data" target="hidden_iframe">
      input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="file1" />
      div class="form-group">
        div class="col-sm-8" style="margin-top: 7px;">
          input type="file" name="demo" >
        /div>
        div class="col-sm-4">
          button type="submit" class="btn btn-primary btn-sm">上傳文件/button>
        /div>
      /div>
    /form>
  /div>
  iframe name="hidden_iframe" src="about:blank" style="display:none;">/iframe>
  div class="progress" style="display: none;">
    div id="percent" class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width:0%;">
      0%
    /div>
  /div>
/div>
/body>
script>
  function fetch_progress(){
    $.get('progress.php',{"key":"file1"}, function(data){
      document.getElementById("percent").innerText = data+"%";
      document.getElementById("percent").setAttribute("style","width:"+data+"%;");
      document.getElementsByClassName("progress")[0].setAttribute("style","display: block;");
      if(data == 100){
        return;
      }else{
        setTimeout(fetch_progress,100);
      }
    });
  }
  $('#upload-form').submit(function(){
    setTimeout(fetch_progress,100);
  });
/script>
/html>

顯示效果

參考文檔:

http://php.net/manual/zh/session.upload-progress.php
//www.jb51.net/article/56305.htm

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php緩存技術總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《PHP錯誤與異常處理方法總結》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP7創建銷毀session的實例方法
  • PHP 圖像處理與SESSION制作超簡單驗證碼的方法示例
  • PHP 實現超簡單的SESSION與COOKIE登錄驗證功能示例
  • PHP cookie與session會話基本用法實例分析
  • 如何解決PHP獲取不到SESSION信息之一般情況
  • thinkphp 5框架實現登陸,登出及session登陸狀態檢測功能示例
  • PHP實現提高SESSION響應速度的幾種方法詳解
  • 通過代碼實例解析PHP session工作原理

標簽:湘西 廈門 黔東 梅河口 濮陽 海北 惠州 文山

巨人網絡通訊聲明:本文標題《PHP基于session.upload_progress 實現文件上傳進度顯示功能詳解》,本文關鍵詞  PHP,基于,session.upload,progress,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP基于session.upload_progress 實現文件上傳進度顯示功能詳解》相關的同類信息!
  • 本頁收集關于PHP基于session.upload_progress 實現文件上傳進度顯示功能詳解的相關信息資訊供網民參考!
  • 推薦文章
    麻豆污视频| 91麻豆精品国产自产在线| 黄视频网站免费观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 精品国产一区二区三区免费 | 国产麻豆精品高清在线播放| 九九干| 午夜在线影院| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 沈樵在线观看福利| 91麻豆爱豆果冻天美星空| 精品国产香蕉在线播出| 九九精品久久久久久久久| 日本免费区| 黄视频网站在线观看| 国产视频一区在线| 韩国毛片免费| 精品视频一区二区三区免费| 欧美a级大片| 黄视频网站在线免费观看| 欧美a级v片不卡在线观看| 毛片高清| 欧美国产日韩久久久| 精品久久久久久中文字幕2017| 欧美日本免费| 日韩综合| 亚洲第一页乱| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 精品毛片视频| 黄色免费三级| 久草免费在线色站| 精品久久久久久中文字幕一区| 亚飞与亚基在线观看| 色综合久久天天综合观看| 国产成人精品综合久久久| 欧美α片无限看在线观看免费| 天天色成人网| 沈樵在线观看福利| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 亚欧成人乱码一区二区| 青青青草视频在线观看| 九九久久99综合一区二区| 欧美日本免费| 国产不卡高清| 国产视频一区在线| 高清一级毛片一本到免费观看| 999久久狠狠免费精品| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产伦理精品| 久久福利影视| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 91麻豆精品国产片在线观看| 日日日夜夜操| 免费一级片在线| 亚洲天堂免费| 午夜在线亚洲男人午在线| 日本在线www| 沈樵在线观看福利| 国产国产人免费视频成69堂| 国产成+人+综合+亚洲不卡| 999久久66久6只有精品| 中文字幕97| 色综合久久天天综线观看| 国产不卡在线观看视频| 日本免费看视频| 青草国产在线观看| 久久久久久久免费视频| 精品视频一区二区三区| 91麻豆国产| 精品国产三级a| 午夜欧美成人久久久久久| 国产激情一区二区三区| 韩国三级一区| 精品视频在线观看视频免费视频| 99久久网站| 999精品影视在线观看| 日韩在线观看视频网站| 欧美激情一区二区三区在线| 国产综合91天堂亚洲国产| 一级毛片视频播放| 久久精品欧美一区二区| 台湾毛片| 精品视频一区二区三区免费| 精品视频一区二区| 97视频免费在线观看| 国产不卡福利| 亚洲女初尝黑人巨高清在线观看| 国产网站在线| 999精品视频在线| 亚洲www美色| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产精品自拍一区| 国产一区二区精品在线观看| 国产精品免费精品自在线观看| 日韩av片免费播放| 国产麻豆精品hdvideoss| 国产成+人+综合+亚洲不卡| 一 级 黄 中国色 片| 免费一级片在线观看| 欧美a免费| 国产一区二区精品久久| 久草免费在线观看| 国产网站在线| 国产91丝袜高跟系列| 久久99爰这里有精品国产| 久久99欧美| 成人免费观看视频| 国产网站免费| 国产高清视频免费观看| 91麻豆精品国产自产在线| 久久99这里只有精品国产| 国产精品免费久久| 国产视频一区在线| 国产伦精品一区二区三区无广告| 四虎影视久久| 国产麻豆精品hdvideoss| 日韩av片免费播放| 四虎影视久久| 精品国产一区二区三区免费 | 国产国产人免费视频成69堂| 免费毛片基地| 青青久久网| 免费毛片基地| 成人高清视频在线观看| 九九久久国产精品| 国产不卡精品一区二区三区| 亚洲精品影院| 日日夜夜婷婷| 欧美激情一区二区三区视频高清| 日本伦理黄色大片在线观看网站| 久久精品成人一区二区三区| 精品国产香蕉伊思人在线又爽又黄| 青草国产在线观看| 91麻豆精品国产自产在线| a级毛片免费全部播放| 国产韩国精品一区二区三区| 四虎影视久久久免费| 国产极品精频在线观看| 日韩在线观看视频网站| 四虎影视久久久| 亚洲精品影院一区二区| 毛片的网站| 国产视频一区二区在线播放| 久久精品店| 成人在免费观看视频国产| 91麻豆tv| 日本免费乱人伦在线观看| 九九精品影院| 一级毛片视频播放| 国产视频一区在线| 午夜激情视频在线播放| 欧美激情伊人| 国产一区二区精品| 日韩免费在线| 国产麻豆精品视频| 免费一级片在线| 国产极品精频在线观看| 国产麻豆精品免费密入口| 欧美一级视频高清片| 国产精品免费久久| 精品视频在线看 | 精品久久久久久影院免费| 国产麻豆精品视频| 免费的黄视频| 国产精品自拍在线| 精品在线观看一区| 亚洲精品中文字幕久久久久久| 精品视频在线观看一区二区三区| 免费一级片在线观看| 精品国产三级a∨在线观看| 国产极品精频在线观看| 你懂的国产精品| 久久久成人网| 欧美激情一区二区三区在线| 国产一区二区精品| 日本免费乱人伦在线观看| 久久99中文字幕| 美女被草网站| 国产不卡在线观看| 午夜在线观看视频免费 成人| 999久久狠狠免费精品| 一本高清在线| 午夜在线影院| 国产韩国精品一区二区三区| 国产一级强片在线观看| 可以免费看污视频的网站| 色综合久久天天综合绕观看| 九九热国产视频| 国产不卡在线看| 精品视频一区二区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 黄视频网站在线观看| 亚欧视频在线| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | a级黄色毛片免费播放视频| 国产视频一区在线| 久久国产影院| 久久福利影视| 久久福利影视| 成人a大片在线观看|