首先,我們制作的這個(gè)進(jìn)度條并沒有后臺(tái)數(shù)據(jù)作為支撐,所以是一個(gè)靠js實(shí)現(xiàn)的一個(gè)簡單的頁面。
創(chuàng)新互聯(lián)公司專注于云州企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城建設(shè)。云州網(wǎng)站建設(shè)公司,為云州等地區(qū)提供建站服務(wù)。全流程按需規(guī)劃網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
我們首先需要新建一個(gè)html5的頁面,其使用的progress元素實(shí)在html5時(shí)代才出現(xiàn)的。
我們在新建的頁面中,輸入一個(gè)段落標(biāo)簽,一個(gè)進(jìn)度條,一個(gè)button按鈕。
然后,我們需要設(shè)置一下進(jìn)度條顯示的進(jìn)度。value代表從多少開始,max代表到多少結(jié)束。我們做的是百分比形式的,應(yīng)該寫成這樣的。
這些做好之后,我們需要書寫兩個(gè)小的事件,實(shí)現(xiàn)原理大體上是鼠標(biāo)單擊下載按鈕,開始下載變?yōu)檎谙螺d百分之多少,等到達(dá)到我們預(yù)設(shè)的時(shí)間后顯示下載完成。
我們之前已經(jīng)給p標(biāo)簽和progress標(biāo)簽分別賦予了不同的id,我們需要獲取到這兩個(gè)元素,并將他們賦給兩個(gè)變量。
我們還要將progress的初始值設(shè)為0,當(dāng)鼠標(biāo)單擊的時(shí)候,我們以一定的時(shí)間為周期調(diào)用寫好的事件。
函數(shù)寫好之后,我們在瀏覽器中調(diào)試,點(diǎn)擊下載按鈕之后會(huì)在300ms內(nèi)完成下載時(shí)間。
不需要后端的,前端自己判斷,代碼如下:
function uploadFile(){
// 獲取上傳文件,放到 formData對(duì)象里面
var pic = $("#myhead").get(0).files[0];
var formData = new FormData();
formData.append("file" , pic);
$.ajax({
type: "POST",
url: "upload",
data: formData ,//這里上傳的數(shù)據(jù)使用了formData 對(duì)象
processData : false,
//必須false才會(huì)自動(dòng)加上正確的Content-Type
contentType : false ,
//這里我們先拿到j(luò)Query產(chǎn)生的 XMLHttpRequest對(duì)象,為其增加 progress 事件綁定,然后再返回交給ajax使用
xhr: function(){
var xhr = $.ajaxSettings.xhr();
if(onprogress xhr.upload) {
xhr.upload.addEventListener("progress" , onprogress, false);
return xhr;
}
}
});
后端的責(zé)任。
前端上傳文件實(shí)時(shí)顯示進(jìn)度條和上傳速度的工作原理就是后端的責(zé)任,在Django中實(shí)現(xiàn)需要重載上傳文件的函數(shù),在上傳時(shí)文件是被分成數(shù)個(gè)MB的chunk處理的,每次都會(huì)調(diào)用這個(gè)上傳函數(shù)。也就是說,每處理一個(gè)chunk就更新uploaded size,然后瀏覽器端通過AJAX獲取這個(gè)值和文件大小
最后用JavaScript渲染到頁面上。
前端只能說會(huì)用框架和插件干活。前段時(shí)間用的百度的webuploader,demo就帶進(jìn)度條的。js代碼不多可以看一下,猜測是監(jiān)聽事件。上傳是前端和通信協(xié)議做的事,后端是寫入。在比較傳統(tǒng)流和和spring自帶的transferto的耗時(shí)統(tǒng)稱上傳時(shí)間是不對(duì)的,應(yīng)為寫入時(shí)間。
項(xiàng)目框架采用spring+hibernate+springMVC如果上傳文件不想使用flash那么你可以采用html5;截圖前段模塊是bootstarp框架;不廢話直接來代碼;spring-mvc配置文件。
nginx話lua可以拿到鏈接的套接口,讀取套接口就可以知道當(dāng)前上傳了多少了??梢钥聪耾penresty的lualib/resty/upload.lua。
名稱欄目:html5上傳進(jìn)度條,js文件上傳進(jìn)度條
瀏覽路徑:http://jinyejixie.com/article28/dsssjjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、、營銷型網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)