本發明專利技術公開了一種文件下載完成后回調的方法,該方法包括利用客戶端創建文件下載請求和回調請求并同時發送至服務器,利用服務器攔截請求并進行處理,將回調請求返回至客戶端執行回調過程。本發明專利技術通過客戶端將Form表單請求和Ajax請求同時發送至服務器,并在服務器端通過線程同步的方式保證Ajax請求晚于Form請求完成,使得開發人員能輕松實現在文件下載完成之后設置回調,從而提升相關業務的用戶體檢。
A method of callback after downloading files
【技術實現步驟摘要】
一種文件下載完成后回調的方法
本專利技術屬于web服務應用
,具體涉及一種文件下載完成后回調的方法。
技術介紹
在web應用中經常會用到文件下載的功能,也常常會有文件下載完成后觸發一些事件的需求,這里將其簡稱為“文件下載完成后的回調”,比如下載文件完成后給用戶適當提示、下載文件完成后頁面需要動態刷新某個區域、文件下載完成后需要立刻進入到下一個重要的處理流程。但ECMAScript標準中并沒有提供文件數據通過服務器傳輸給瀏覽器保存后的回調接口,因此開發人員不可以在文件下載完成后直接執行自己添加的代碼邏輯。當前針對以上下載后回調需求的方法有:(1)Ajax直接請求二進制數據,在Ajax本身的回調函數中將返回的二進制數據關聯到HTML的“a”標簽中;關聯完成后執行自定義回調函數;最后通過觸發a標簽事件下載文件。優點:完全使用ajax無刷新異步的特點實現,請求過程很簡單。缺點:無法處理體積大的文件;效率低;無法做到瀏覽器將文件保存完成后執行回調,僅能做到在文件開始下載時回調。(2)通過前臺Ajax先發送一個請求,請求服務器生成文件存于指定位置,返回文件地址;返回時便執行開發人員自己指定的回調函數;最后發送一個表單請求,下載指定地址的文件。優點:實現方式簡單。缺點:整個流程被分割為先存儲、后下載;準備下載的文件必須按照其規定位置存放,對后臺開發有一定限制;無法做到瀏覽器將文件保存完成后執行回調,僅能做到在文件開始下載時回調。上述方法中,僅能控制文件形成與回調的順序卻無法實現下載與回調的處理順序,對于下載完成與后續處理有順序要求的業務,無法保證業務邏輯正確性。專利
技術實現思路
本專利技術的主要目的在于提供一種文件下載完成后回調的方法,旨在解決既有方法中存在的以上技術問題。為實現上述目的,本專利技術提供一種文件下載完成后回調的方法,包括以下步驟:S1、利用客戶端創建文件下載請求和回調請求,生成本次請求對應的唯一標識參數,將裝載唯一標識參數的文件下載請求和回調請求同時發送至服務器;S2、利用服務器中的攔截器攔截客戶端發送的各種請求,并利用過濾器對請求進行過濾,得到帶有唯一標識參數的請求并進行處理;S3、利用服務器將回調請求返回至客戶端,并利用客戶端執行回調過程,完成文件下載和回調過程。進一步地,所述步驟S1具體包括以下步驟:S11、利用客戶端在發送請求時生成本次請求對應的唯一標識參數;S12、利用客戶端創建主請求和輔助請求,其中主請求為Form表單數據文件下載請求,輔助請求為具有回調功能的Ajax請求;將主請求和輔助請求分別裝載本次請求生成的唯一標識參數,對請求進行標記;S13、利用客戶端將步驟S12標記后的主請求和輔助請求同時發送至服務器。進一步地,所述步驟S2具體包括以下步驟:S21、利用服務器中的攔截器攔截客戶端發送的各種請求,并利用過濾器對請求進行過濾,提取得到帶有唯一標識參數的請求;S22、當獲取得到兩個帶有相同唯一標識的請求后,首先處理主請求進行數據獲取和文件下載,再處理輔助請求。進一步地,所述步驟S22具體包括以下步驟:S221、利用服務器中的攔截器攔截到第一個帶有唯一標識參數的請求R1后,將請求R1的狀態設置為等待狀態;S222、利用服務器中的攔截器繼續攔截請求,并利用過濾器對請求進行過濾,提取得到帶有相同唯一標識參數的請求R2;S223、判斷請求R2是否為主請求;若是,即請求R2為主請求,請求R1為輔助請求,則執行步驟S224;若否,即請求R2為輔助請求,請求R1為主請求,則執行步驟S225;S224、利用服務器對主請求進行處理,獲取二進制流數據,發送給客戶端生成文件下載;主請求處理完成后即執行步驟S226;S225、喚醒等待狀態中的主請求,并將輔助請求設置為等待狀態,執行步驟S224;S226、喚醒等待狀態中的輔助請求,處理輔助請求。本專利技術的有益效果是:本專利技術通過客戶端將Form表單請求和Ajax請求同時發送至服務器,并在服務器端通過線程同步的方式保證Ajax請求晚于Form請求完成,使得開發人員能輕松實現在文件下載完成之后設置回調,從而提升相關業務的用戶體檢。附圖說明圖1是本專利技術的文件下載完成后回調的方法流程示意圖;圖2是本專利技術中步驟S1的處理流程示意圖;圖3是本專利技術中步驟S2的處理流程示意圖。具體實施方式為了使本專利技術的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本專利技術進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本專利技術,并不用于限定本專利技術。本專利技術實施例的主要解決方案是:如圖1所示,一種文件下載完成后回調的方法,包括以下步驟:S1、利用客戶端創建文件下載請求和回調請求,生成本次請求對應的唯一標識參數,將裝載唯一標識參數的文件下載請求和回調請求同時發送至服務器;S2、利用服務器中的攔截器攔截客戶端發送的各種請求,并利用過濾器對請求進行過濾,得到帶有唯一標識參數的請求并進行處理;S3、利用服務器將回調請求返回至客戶端,并利用客戶端執行回調過程,完成文件下載和回調過程。本專利技術利用Form提交表單方式實現文件下載,利用Ajax請求方式實現請求回調,通過Form提交與Ajax請求同時進行,并在服務器端通過線程同步的方式保證Ajax請求晚于Form請求完成以實現文件下載完成后執行回調。在本專利技術的一個可選實施例中,上述步驟S1首先利用客戶端,例如各類瀏覽器等訪問web應用,創建文件下載請求和回調請求,生成本次請求對應的唯一標識參數,將裝載唯一標識參數的文件下載請求和回調請求同時發送至服務器。如圖2所示,上述步驟S1具體包括以下步驟:S11、利用客戶端在發送請求時生成本次請求對應的唯一標識download_specific_id參數;S12、利用客戶端創建兩個請求,即主請求和輔助請求,其中主請求為Form表單數據文件下載請求,輔助請求為具有回調功能的Ajax請求,回調包括但不限于返回、刷新頁面等操作;將主請求和輔助請求分別裝載本次請求生成的唯一標識download_specific_id參數對請求進行標記;S13、利用客戶端將步驟S12標記后的主請求和輔助請求同時發送至服務器。在本專利技術的一個可選實施例中,上述步驟S2利用服務器中的攔截器攔截客戶端發送的各種請求,并利用過濾器對攔截的請求進行過濾,得到帶有唯一標識download_specific_id參數的請求并進行處理。如圖3所示,上述步驟S2具體包括以下步驟:S21、利用服務器中的攔截器攔截客戶端發送的各種請求,并利用過濾器對攔截的請求進行過濾,提取得到帶有唯一標識download_specific_id參數的請求;S22、一個唯一標識download_specific_id有且僅有兩個對應的請求,當獲取得到兩個帶有相同唯一標識download_specific_id的請求后,首先處理主請求進行數據獲取和文件下載,處理完主請求后,再處理輔助請求。上述步驟S22具體包括以下步驟:S221、利用服務器中的攔截器攔截到第一個帶有唯一標識參數的請求R1后,將請求R1的狀態設置為等待狀態;在本實施例中,當從服務器session獲取到第一個帶有download_specific_id1參數的請求R1后,后臺將請求R1的狀態設置為等待狀態。本文檔來自技高網...
【技術保護點】
1.一種文件下載完成后回調的方法,其特征在于,包括以下步驟:S1、利用客戶端創建文件下載請求和回調請求,生成本次請求對應的唯一標識參數,將裝載唯一標識參數的文件下載請求和回調請求同時發送至服務器;S2、利用服務器中的攔截器攔截客戶端發送的各種請求,并利用過濾器對請求進行過濾,得到帶有唯一標識參數的請求并進行處理;S3、利用服務器將回調請求返回至客戶端,并利用客戶端執行回調過程,完成文件下載和回調過程。
【技術特征摘要】
1.一種文件下載完成后回調的方法,其特征在于,包括以下步驟:S1、利用客戶端創建文件下載請求和回調請求,生成本次請求對應的唯一標識參數,將裝載唯一標識參數的文件下載請求和回調請求同時發送至服務器;S2、利用服務器中的攔截器攔截客戶端發送的各種請求,并利用過濾器對請求進行過濾,得到帶有唯一標識參數的請求并進行處理;S3、利用服務器將回調請求返回至客戶端,并利用客戶端執行回調過程,完成文件下載和回調過程。2.如權利要求1所述的文件下載完成后回調的方法,其特征在于,所述步驟S1具體包括以下步驟:S11、利用客戶端在發送請求時生成本次請求對應的唯一標識參數;S12、利用客戶端創建主請求和輔助請求,其中主請求為Form表單數據文件下載請求,輔助請求為具有回調功能的Ajax請求;將主請求和輔助請求分別裝載本次請求生成的唯一標識參數,對請求進行標記;S13、利用客戶端將步驟S12標記后的主請求和輔助請求同時發送至服務器。3.如權利要求2所述的文件下載完成后回調的方法,其特征在于,所述步驟S2具體包括以下步驟:S21、利用服務...
【專利技術屬性】
技術研發人員:唐力,徐向茹,彭森,王賀,王定平,
申請(專利權)人:成都九洲電子信息系統股份有限公司,
類型:發明
國別省市:四川,51
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。