跟踪上传进度PHP和JavaScript
生活随笔
收集整理的這篇文章主要介紹了
跟踪上传进度PHP和JavaScript
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
多年來一直困擾著Web開發(fā)人員的一個(gè)問題是如何添加到他們的應(yīng)用程序,如文件上傳進(jìn)度條,實(shí)時(shí)信息。用戶是急躁;他們不想坐等,而瀏覽器是做一些,不知是否已被凍結(jié)或如果他們有一個(gè)緩慢的連接。提供了一個(gè)進(jìn)度指示器,為用戶提供有用的信息,并讓他們知道到底發(fā)生了什么。
首先想到的,你可能會(huì)想辦成這可以??很容易地通過首次獲得從用戶的計(jì)算機(jī)上文件的大小,然后執(zhí)行目錄所在的文件正在上傳的服務(wù)器上對(duì)一些簡(jiǎn)單的計(jì)算。關(guān)于第二個(gè)想法,你會(huì)發(fā)現(xiàn)事情并非那么簡(jiǎn)單。
JavaScript可以訪問文件的名稱,類型,甚至本地圖像的寬度和高度,但它直到HTML5的,它可以訪問文件的大小。不幸的是,HTML5仍然不是一個(gè)完整的標(biāo)準(zhǔn),并均勻分布在所有的瀏覽器不支持。一個(gè)替代的解決方案是依靠一個(gè)Flash,Java或ActiveX插件,沒有感謝,我會(huì)通過。然而,另一種解決辦法是安裝可選PHP緩存擴(kuò)展,但可能不取決于您的托管環(huán)境,它似乎像這樣一個(gè)小任務(wù),如矯枉過正。
這似乎仿佛所有的選項(xiàng)是與滋擾充滿,任務(wù)已迅速成為一個(gè)頭痛。但在尤達(dá)的話,“不......是另一個(gè)。”
我愛PHP的許多原因之一是,它使看似困難的任務(wù)變得容易。5.4 PHP的,他們所做的又一個(gè)新的配置指令集,session.upload_progress。
在這篇文章中,我會(huì)告訴你如何這個(gè)功能可以被用來創(chuàng)建一個(gè)簡(jiǎn)單的上傳進(jìn)度條沒有任何外部庫(kù)或?yàn)g覽器的依賴。我將首先討論它是如何工作的,然后我走過你創(chuàng)建的四個(gè)文件,需要完成的任務(wù)(上傳的形式,一些JavaScript,一點(diǎn)點(diǎn)CSS,返回上傳的地位和文件)。
會(huì)話上傳進(jìn)度
除了 ??一般的要求,允許上傳文件,有兩個(gè)跟蹤進(jìn)度。必須啟用session.upload_progress.enabled指令和你所指定的名稱的網(wǎng)頁(yè)表單中必須有一個(gè)隱藏的場(chǎng)session.upload_progress.name指令。當(dāng)session.upload_progress.enabled是真實(shí)的(因?yàn)樗J(rèn)是在PHP 5.4,大概超出)的$ _POST [ session.upload_progress.name期間發(fā)送上傳,文件傳輸?shù)男畔⑹窃? _SESSION的超全局陣列。
的print_r()的輸出了$ _SESSION數(shù)組將類似于下列文件傳輸過程中:
Array ( [upload_progress_myForm] => Array ( [start_time] => 1323733740 [content_length] => 721127769 [bytes_processed] => 263178326 [done] =>? [files] => Array ( [0] => Array ( [field_name] => userfile [name] => ubuntu-10.04.3-desktop-i386.iso [tmp_name] =>? [error] => 0 [done] =>? [start_time] => 1323733740 [bytes_processed] => 263178026 ) ) ) )
當(dāng)您正在開發(fā)本地或快速網(wǎng)絡(luò)上傳小文件,你不會(huì)是能夠直觀地觀察到的進(jìn)展,因?yàn)檗D(zhuǎn)讓發(fā)生如此之快。在這種情況下,你可能想嘗試傳送一個(gè)大文件。確保在你的php.ini的設(shè)置文件允許上傳大,具體的post_max_size 的upload_max_filesize指令,然后確認(rèn)他們是理智的價(jià)值,當(dāng)你去生產(chǎn)。
創(chuàng)建表單 我會(huì)提出的第一個(gè)文件上傳表單。只是為了保持盡可能簡(jiǎn)單的事情,例如將張貼到自己,一次只能處理一個(gè)文件上傳。此外,我不會(huì)打擾保存文件后,它已上載。 下面是代碼form.php:
01 <?php 02 if ($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_FILES["userfile"])) { 03 ?? ?// move_uploaded_file() 04 } 05 ?> 06 <html> 07 ?<head> 08 ??<title>File Upload Progress Bar</title> 09 ??<link rel="stylesheet" type="text/css" href="style.css"> 10 ?</head> 11 ?<body> 12 ??<div id="bar_blank"> 13 ?? <div id="bar_color"></div> 14 ??</div> 15 ??<div id="status"></div> 16 ??<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST" 17 ?? id="myForm" enctype="multipart/form-data" target="hidden_iframe"> 18 ?? <input type="hidden" value="myForm" 19 ?? ?name="<?php echo ini_get("session.upload_progress.name"); ?>"> 20 ?? <input type="file" name="userfile"><br> 21 ?? <input type="submit" value="Start Upload"> 22 ??</form> 23 ??<iframe id="hidden_iframe" name="hidden_iframe" src="about:blank"></iframe> 24 ??<script type="text/javascript" src="script.js"></script> 25 ?</body> 26 </html>
在這個(gè)例子中的代碼實(shí)際上處理的文件已被省略,讓事情變得簡(jiǎn)單。如果你有興趣在這樣的代碼看起來應(yīng)該像什么,檢查出的文章用PHP文件上傳蒂莫西Boronczyk。 提供網(wǎng)頁(yè)的標(biāo)題,包括樣式表后的頭一節(jié),你會(huì)發(fā)現(xiàn)一個(gè)div元素的小集合。與身份證“bar_blank”格進(jìn)度欄的容器。與身份證“bar_color”格將動(dòng)態(tài)更新的文件上傳進(jìn)度。“身份”的div將顯示上傳%的數(shù)值。 設(shè)置的形式提交到一個(gè)隱藏的iframe元素相同的URL,并將其目標(biāo)屬性點(diǎn)。提交表單到一個(gè)隱藏的框架,讓你保持在同一頁(yè)上,而在后臺(tái)完成的工作正在訪問者。事實(shí)上,這是一種常見的做法時(shí),做“的Ajax文件上傳”,因?yàn)樗苯邮褂肑avaScript的XMLHttpRequest的對(duì)象發(fā)送一個(gè)文件的內(nèi)容是不可能的。 在形式,特殊的隱藏字段需要填充的數(shù)組$ _SESSION中出現(xiàn),其次是一個(gè)文件上傳輸入和提交按鈕。提交表單將觸發(fā)一個(gè)JavaScript函數(shù)名為startUpload()將定義所包含的JavaScript文件。 在頁(yè)面底部的隱藏幀的形式將發(fā)布和進(jìn)口script.js的文件。 添加一些樣式 style.css文件,下一個(gè)文件,是非常直截了當(dāng)?shù)摹N叶x的進(jìn)度條容器的大小,并給它一個(gè)1px的黑邊,作為它的加載進(jìn)度條的顏色,和隱藏的iframe和進(jìn)度條。
01 #bar_blank { 02 ??border: solid 1px #000; 03 ??height: 20px; 04 ??width: 300px; 05 } 06 07 #bar_color { 08 ??background-color: #006666; 09 ??height: 20px; 10 ??width: 0px; 11 } 12 13 #bar_blank, #hidden_iframe { 14 ??display: none; 15 }
客戶端功能 script.js的文件是最大的一組文件。它包含六大功能,我將在下面討論。很多人喜歡使用jQuery提供的一些功能,如果你愿意,你肯定是自由地這樣做,但我個(gè)人更喜歡老派的做法。類似日本的地方如何對(duì)手工制作的貨物價(jià)值較高的,我只是覺得更加熱愛代碼,如果是我自己。
01 function toggleBarVisibility() { 02 ?? ?var e = document.getElementById("bar_blank"); 03 ?? ?e.style.display = (e.style.display == "block") ? "none" : "block"; 04 } 05 06 function createRequestObject() { 07 ?? ?var http; 08 ?? ?if (navigator.appName == "Microsoft Internet Explorer") { 09 ?? ? ? ?http = new ActiveXObject("Microsoft.XMLHTTP"); 10 ?? ?} 11 ?? ?else { 12 ?? ? ? ?http = new XMLHttpRequest(); 13 ?? ?} 14 ?? ?return http; 15 } 16 17 function sendRequest() { 18 ?? ?var http = createRequestObject(); 19 ?? ?http.open("GET", "progress.php"); 20 ?? ?http.onreadystatechange = function () { handleResponse(http); }; 21 ?? ?http.send(null); 22 } 23 24 function handleResponse(http) { 25 ?? ?var response; 26 ?? ?if (http.readyState == 4) { 27 ?? ? ? ?response = http.responseText; 28 ?? ? ? ?document.getElementById("bar_color").style.width = response + "%"; 29 ?? ? ? ?document.getElementById("status").innerHTML = response + "%"; 30 31 ?? ? ? ?if (response < 100) { 32 ?? ? ? ? ? ?setTimeout("sendRequest()", 1000); 33 ?? ? ? ?} 34 ?? ? ? ?else { 35 ?? ? ? ? ? ?toggleBarVisibility(); 36 ?? ? ? ? ? ?document.getElementById("status").innerHTML = "Done."; 37 ?? ? ? ?} 38 ?? ?} 39 } 40 41 function startUpload() { 42 ?? ?toggleBarVisibility(); 43 ?? ?setTimeout("sendRequest()", 1000); 44 } 45 46 (function () { 47 ?? ?document.getElementById("myForm").onsubmit = startUpload; 48 })();
toggleBarVisibility()函數(shù)設(shè)置一個(gè)合適的風(fēng)格上的“bar_blank”格,以顯示或隱藏進(jìn)度條。最初,它開出隱藏的,但一旦上載開始將顯示上傳完成時(shí)再次隱藏。 createRequestObject()函數(shù)創(chuàng)建的XMLHttpRequest或ActiveXObject的基于用戶的瀏覽器上的對(duì)象。這可能是大多數(shù)人都期待jQuery或其他一些JavaScript框架提供的功能。 sendRequest將()函數(shù)請(qǐng)求的progress.php GET請(qǐng)求的文件,然后調(diào)用handleResponse()函數(shù)來處理返回的數(shù)據(jù)。 handleResponse()函數(shù)處理從響應(yīng)progress.php這將是一個(gè)1-100之間的數(shù)字上的文件上傳進(jìn)度而定。我也用適當(dāng)?shù)闹蹈隆盃顟B(tài)”DIV。如果低于100的電流%,然后我調(diào)用JavaScript的原生的setTimeout()函數(shù)將另一個(gè)更新請(qǐng)求后1的第二個(gè)可以調(diào)整這個(gè)值適當(dāng),否則我隱藏進(jìn)度條再次和狀態(tài)設(shè)置為“完成”。 上傳欄可見的startUpload()函數(shù)使發(fā)送1秒的延遲后,更新的要求。這個(gè)小小的延遲需要,為了給上傳時(shí)間開始。 最后一個(gè)功能是一個(gè)可自執(zhí)行的匿名函數(shù)注冊(cè)startUpload()表單的提交事件。
? 實(shí)時(shí)進(jìn)度 帶來的一切融合在一起的最后一個(gè)文件是progress.php文件:
01 <?php 02 session_start(); 03 04 $key = ini_get("session.upload_progress.prefix") . "myForm"; 05 if (!empty($_SESSION[$key])) { 06 ?? ?$current = $_SESSION[$key]["bytes_processed"]; 07 ?? ?$total = $_SESSION[$key]["content_length"]; 08 ?? ?echo $current < $total ? ceil($current / $total * 100) : 100; 09 } 10 else { 11 ?? ?echo 100; 12 }
腳本執(zhí)行一些簡(jiǎn)單的數(shù)學(xué)上傳輸?shù)淖止?jié)數(shù)除以總的文件大小,乘以100,四舍五入給個(gè)百分點(diǎn)。 關(guān)于轉(zhuǎn)讓的信息鍵入一個(gè)的session.upload_progress.prefix指令的值串聯(lián)的的隱藏session.upload_progress.name領(lǐng)域的價(jià)值。因?yàn)槲业男问酵ㄟ^了“myForm的”,會(huì)議的關(guān)鍵是確定ini_get(“session.upload_progress.prefix”)。“myForm的”。 這里是一個(gè)行動(dòng)的進(jìn)度欄的截圖:
微調(diào)的行為 PHP提供了一些額外的指令,以幫助微調(diào)會(huì)議上傳的行為,你應(yīng)該知道的。例如,session.upload_progress.cleanup,這是默認(rèn)設(shè)置為1,清理完成后立即上傳數(shù)據(jù)的額外會(huì)議。你必須要小心,以避免潛在的競(jìng)爭(zhēng)條件。 再看一看,在代碼progress.php,你會(huì)發(fā)現(xiàn),我檢查看如果$ _SESSION中[$鍵]是空的或不繼續(xù)之前。我的JavaScript功能觸發(fā),從返回的結(jié)果,每只要第二progress.php小于100。如果session.upload_progress.cleanup啟用和我的腳本獲取上傳的99%和1 1/2-second后上傳完成了$ _SESSION [$鍵]將不存在下一個(gè)檢查。如果我沒有考慮到,然后我的JavaScript函數(shù)可能保持射擊,即使上傳完成后。 另外兩個(gè)指令是session.upload_progress.freq,和session.upload_progress.min_freq雙方確定如何往往會(huì)議應(yīng)更新。可以在任一字節(jié)(即100),或總字節(jié)數(shù)的百分比(即2%)的頻率值。價(jià)值min_freq在幾秒鐘內(nèi),并表示更新之間的最小秒數(shù)。顯然,如果min_freq更新每隔1秒,這將是毫無意義的檢查,每100毫秒您的JavaScript。 總結(jié) 你現(xiàn)在應(yīng)該有一個(gè)牢固掌握如何創(chuàng)建一個(gè)使用會(huì)議上傳進(jìn)度功能的文件上傳進(jìn)度條。向前走,我鼓勵(lì)你們實(shí)驗(yàn)上傳多個(gè)文件,選擇取消使用進(jìn)度上傳$ _SESSION [$鍵可以鼓起你的頭腦[“cancel_upload”,],或任何其他的想法。請(qǐng)?jiān)谀慕?jīng)驗(yàn)和改進(jìn)的意見。
Array ( [upload_progress_myForm] => Array ( [start_time] => 1323733740 [content_length] => 721127769 [bytes_processed] => 263178326 [done] =>? [files] => Array ( [0] => Array ( [field_name] => userfile [name] => ubuntu-10.04.3-desktop-i386.iso [tmp_name] =>? [error] => 0 [done] =>? [start_time] => 1323733740 [bytes_processed] => 263178026 ) ) ) )
當(dāng)您正在開發(fā)本地或快速網(wǎng)絡(luò)上傳小文件,你不會(huì)是能夠直觀地觀察到的進(jìn)展,因?yàn)檗D(zhuǎn)讓發(fā)生如此之快。在這種情況下,你可能想嘗試傳送一個(gè)大文件。確保在你的php.ini的設(shè)置文件允許上傳大,具體的post_max_size 的upload_max_filesize指令,然后確認(rèn)他們是理智的價(jià)值,當(dāng)你去生產(chǎn)。
創(chuàng)建表單 我會(huì)提出的第一個(gè)文件上傳表單。只是為了保持盡可能簡(jiǎn)單的事情,例如將張貼到自己,一次只能處理一個(gè)文件上傳。此外,我不會(huì)打擾保存文件后,它已上載。 下面是代碼form.php:
01 <?php 02 if ($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_FILES["userfile"])) { 03 ?? ?// move_uploaded_file() 04 } 05 ?> 06 <html> 07 ?<head> 08 ??<title>File Upload Progress Bar</title> 09 ??<link rel="stylesheet" type="text/css" href="style.css"> 10 ?</head> 11 ?<body> 12 ??<div id="bar_blank"> 13 ?? <div id="bar_color"></div> 14 ??</div> 15 ??<div id="status"></div> 16 ??<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST" 17 ?? id="myForm" enctype="multipart/form-data" target="hidden_iframe"> 18 ?? <input type="hidden" value="myForm" 19 ?? ?name="<?php echo ini_get("session.upload_progress.name"); ?>"> 20 ?? <input type="file" name="userfile"><br> 21 ?? <input type="submit" value="Start Upload"> 22 ??</form> 23 ??<iframe id="hidden_iframe" name="hidden_iframe" src="about:blank"></iframe> 24 ??<script type="text/javascript" src="script.js"></script> 25 ?</body> 26 </html>
在這個(gè)例子中的代碼實(shí)際上處理的文件已被省略,讓事情變得簡(jiǎn)單。如果你有興趣在這樣的代碼看起來應(yīng)該像什么,檢查出的文章用PHP文件上傳蒂莫西Boronczyk。 提供網(wǎng)頁(yè)的標(biāo)題,包括樣式表后的頭一節(jié),你會(huì)發(fā)現(xiàn)一個(gè)div元素的小集合。與身份證“bar_blank”格進(jìn)度欄的容器。與身份證“bar_color”格將動(dòng)態(tài)更新的文件上傳進(jìn)度。“身份”的div將顯示上傳%的數(shù)值。 設(shè)置的形式提交到一個(gè)隱藏的iframe元素相同的URL,并將其目標(biāo)屬性點(diǎn)。提交表單到一個(gè)隱藏的框架,讓你保持在同一頁(yè)上,而在后臺(tái)完成的工作正在訪問者。事實(shí)上,這是一種常見的做法時(shí),做“的Ajax文件上傳”,因?yàn)樗苯邮褂肑avaScript的XMLHttpRequest的對(duì)象發(fā)送一個(gè)文件的內(nèi)容是不可能的。 在形式,特殊的隱藏字段需要填充的數(shù)組$ _SESSION中出現(xiàn),其次是一個(gè)文件上傳輸入和提交按鈕。提交表單將觸發(fā)一個(gè)JavaScript函數(shù)名為startUpload()將定義所包含的JavaScript文件。 在頁(yè)面底部的隱藏幀的形式將發(fā)布和進(jìn)口script.js的文件。 添加一些樣式 style.css文件,下一個(gè)文件,是非常直截了當(dāng)?shù)摹N叶x的進(jìn)度條容器的大小,并給它一個(gè)1px的黑邊,作為它的加載進(jìn)度條的顏色,和隱藏的iframe和進(jìn)度條。
01 #bar_blank { 02 ??border: solid 1px #000; 03 ??height: 20px; 04 ??width: 300px; 05 } 06 07 #bar_color { 08 ??background-color: #006666; 09 ??height: 20px; 10 ??width: 0px; 11 } 12 13 #bar_blank, #hidden_iframe { 14 ??display: none; 15 }
客戶端功能 script.js的文件是最大的一組文件。它包含六大功能,我將在下面討論。很多人喜歡使用jQuery提供的一些功能,如果你愿意,你肯定是自由地這樣做,但我個(gè)人更喜歡老派的做法。類似日本的地方如何對(duì)手工制作的貨物價(jià)值較高的,我只是覺得更加熱愛代碼,如果是我自己。
01 function toggleBarVisibility() { 02 ?? ?var e = document.getElementById("bar_blank"); 03 ?? ?e.style.display = (e.style.display == "block") ? "none" : "block"; 04 } 05 06 function createRequestObject() { 07 ?? ?var http; 08 ?? ?if (navigator.appName == "Microsoft Internet Explorer") { 09 ?? ? ? ?http = new ActiveXObject("Microsoft.XMLHTTP"); 10 ?? ?} 11 ?? ?else { 12 ?? ? ? ?http = new XMLHttpRequest(); 13 ?? ?} 14 ?? ?return http; 15 } 16 17 function sendRequest() { 18 ?? ?var http = createRequestObject(); 19 ?? ?http.open("GET", "progress.php"); 20 ?? ?http.onreadystatechange = function () { handleResponse(http); }; 21 ?? ?http.send(null); 22 } 23 24 function handleResponse(http) { 25 ?? ?var response; 26 ?? ?if (http.readyState == 4) { 27 ?? ? ? ?response = http.responseText; 28 ?? ? ? ?document.getElementById("bar_color").style.width = response + "%"; 29 ?? ? ? ?document.getElementById("status").innerHTML = response + "%"; 30 31 ?? ? ? ?if (response < 100) { 32 ?? ? ? ? ? ?setTimeout("sendRequest()", 1000); 33 ?? ? ? ?} 34 ?? ? ? ?else { 35 ?? ? ? ? ? ?toggleBarVisibility(); 36 ?? ? ? ? ? ?document.getElementById("status").innerHTML = "Done."; 37 ?? ? ? ?} 38 ?? ?} 39 } 40 41 function startUpload() { 42 ?? ?toggleBarVisibility(); 43 ?? ?setTimeout("sendRequest()", 1000); 44 } 45 46 (function () { 47 ?? ?document.getElementById("myForm").onsubmit = startUpload; 48 })();
toggleBarVisibility()函數(shù)設(shè)置一個(gè)合適的風(fēng)格上的“bar_blank”格,以顯示或隱藏進(jìn)度條。最初,它開出隱藏的,但一旦上載開始將顯示上傳完成時(shí)再次隱藏。 createRequestObject()函數(shù)創(chuàng)建的XMLHttpRequest或ActiveXObject的基于用戶的瀏覽器上的對(duì)象。這可能是大多數(shù)人都期待jQuery或其他一些JavaScript框架提供的功能。 sendRequest將()函數(shù)請(qǐng)求的progress.php GET請(qǐng)求的文件,然后調(diào)用handleResponse()函數(shù)來處理返回的數(shù)據(jù)。 handleResponse()函數(shù)處理從響應(yīng)progress.php這將是一個(gè)1-100之間的數(shù)字上的文件上傳進(jìn)度而定。我也用適當(dāng)?shù)闹蹈隆盃顟B(tài)”DIV。如果低于100的電流%,然后我調(diào)用JavaScript的原生的setTimeout()函數(shù)將另一個(gè)更新請(qǐng)求后1的第二個(gè)可以調(diào)整這個(gè)值適當(dāng),否則我隱藏進(jìn)度條再次和狀態(tài)設(shè)置為“完成”。 上傳欄可見的startUpload()函數(shù)使發(fā)送1秒的延遲后,更新的要求。這個(gè)小小的延遲需要,為了給上傳時(shí)間開始。 最后一個(gè)功能是一個(gè)可自執(zhí)行的匿名函數(shù)注冊(cè)startUpload()表單的提交事件。
? 實(shí)時(shí)進(jìn)度 帶來的一切融合在一起的最后一個(gè)文件是progress.php文件:
01 <?php 02 session_start(); 03 04 $key = ini_get("session.upload_progress.prefix") . "myForm"; 05 if (!empty($_SESSION[$key])) { 06 ?? ?$current = $_SESSION[$key]["bytes_processed"]; 07 ?? ?$total = $_SESSION[$key]["content_length"]; 08 ?? ?echo $current < $total ? ceil($current / $total * 100) : 100; 09 } 10 else { 11 ?? ?echo 100; 12 }
腳本執(zhí)行一些簡(jiǎn)單的數(shù)學(xué)上傳輸?shù)淖止?jié)數(shù)除以總的文件大小,乘以100,四舍五入給個(gè)百分點(diǎn)。 關(guān)于轉(zhuǎn)讓的信息鍵入一個(gè)的session.upload_progress.prefix指令的值串聯(lián)的的隱藏session.upload_progress.name領(lǐng)域的價(jià)值。因?yàn)槲业男问酵ㄟ^了“myForm的”,會(huì)議的關(guān)鍵是確定ini_get(“session.upload_progress.prefix”)。“myForm的”。 這里是一個(gè)行動(dòng)的進(jìn)度欄的截圖:
微調(diào)的行為 PHP提供了一些額外的指令,以幫助微調(diào)會(huì)議上傳的行為,你應(yīng)該知道的。例如,session.upload_progress.cleanup,這是默認(rèn)設(shè)置為1,清理完成后立即上傳數(shù)據(jù)的額外會(huì)議。你必須要小心,以避免潛在的競(jìng)爭(zhēng)條件。 再看一看,在代碼progress.php,你會(huì)發(fā)現(xiàn),我檢查看如果$ _SESSION中[$鍵]是空的或不繼續(xù)之前。我的JavaScript功能觸發(fā),從返回的結(jié)果,每只要第二progress.php小于100。如果session.upload_progress.cleanup啟用和我的腳本獲取上傳的99%和1 1/2-second后上傳完成了$ _SESSION [$鍵]將不存在下一個(gè)檢查。如果我沒有考慮到,然后我的JavaScript函數(shù)可能保持射擊,即使上傳完成后。 另外兩個(gè)指令是session.upload_progress.freq,和session.upload_progress.min_freq雙方確定如何往往會(huì)議應(yīng)更新。可以在任一字節(jié)(即100),或總字節(jié)數(shù)的百分比(即2%)的頻率值。價(jià)值min_freq在幾秒鐘內(nèi),并表示更新之間的最小秒數(shù)。顯然,如果min_freq更新每隔1秒,這將是毫無意義的檢查,每100毫秒您的JavaScript。 總結(jié) 你現(xiàn)在應(yīng)該有一個(gè)牢固掌握如何創(chuàng)建一個(gè)使用會(huì)議上傳進(jìn)度功能的文件上傳進(jìn)度條。向前走,我鼓勵(lì)你們實(shí)驗(yàn)上傳多個(gè)文件,選擇取消使用進(jìn)度上傳$ _SESSION [$鍵可以鼓起你的頭腦[“cancel_upload”,],或任何其他的想法。請(qǐng)?jiān)谀慕?jīng)驗(yàn)和改進(jìn)的意見。
總結(jié)
以上是生活随笔為你收集整理的跟踪上传进度PHP和JavaScript的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查话费100861
- 下一篇: 卡片的sak为不支持的类型_Python