亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

Sdk實(shí)現(xiàn)文件下載的方法與裝置制造方法

文檔序號(hào):7774967閱讀:217來源:國(guó)知局
Sdk實(shí)現(xiàn)文件下載的方法與裝置制造方法
【專利摘要】本發(fā)明提供了一種SDK實(shí)現(xiàn)文件下載的方法與裝置,其中,SDK應(yīng)用于云存儲(chǔ)系統(tǒng),所述方法包括:接收文件下載指令,所述文件下載指令中攜帶有待下載文件的信息;根據(jù)所述文件下載指令和所述待下載文件的信息,從云存儲(chǔ)端獲取所述待下載文件,并且,獲取下載所述待下載文件的統(tǒng)一上下文環(huán)境;通過下載接口中設(shè)定的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用所述下載接口中封裝的多個(gè)文件下載函數(shù),使所述多個(gè)文件下載函數(shù)使用所述統(tǒng)一上下文環(huán)境進(jìn)行所述待下載文件的下載。通過本發(fā)明,減少了開發(fā)人員的開發(fā)難度,提高了開發(fā)效率和開發(fā)質(zhì)量。
【專利說明】SDK實(shí)現(xiàn)文件下載的方法與裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,特別是涉及一種基于Android系統(tǒng)的SDK (SoftwareDevelopment Kit,軟件開發(fā)工具包)實(shí)現(xiàn)文件下載的方法與裝置。
【背景技術(shù)】
[0002]SDK是一些被軟件工程師用于為特定的軟件包、軟件框架、硬件平臺(tái)、操作系統(tǒng)等創(chuàng)建應(yīng)用軟件的開發(fā)工具的集合,它可以簡(jiǎn)單地為某個(gè)程序設(shè)計(jì)語(yǔ)言提供API(Application Programming Interface,應(yīng)用程序編程接口)的一些文件,但也可能包括能與某種嵌入式系統(tǒng)通訊的復(fù)雜的硬件。
[0003]隨著云存儲(chǔ)技術(shù)的發(fā)展,SDK越來越多地被用于開發(fā)與云存儲(chǔ)相關(guān)的應(yīng)用中。云存儲(chǔ)通過集群應(yīng)用、網(wǎng)格技術(shù)或分布式文件系統(tǒng)等功能,將網(wǎng)絡(luò)中大量各種不同類型的存儲(chǔ)設(shè)備通過應(yīng)用軟件集合起來協(xié)同工作,共同對(duì)外提供數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)訪問功能。目前,云存儲(chǔ)提供的最常用的業(yè)務(wù)訪問功能包括數(shù)據(jù)上傳和下載。開發(fā)人員在使用現(xiàn)有的SDK進(jìn)行云存儲(chǔ)的上傳任務(wù)和下載任務(wù)的開發(fā)時(shí),不但需要熟悉上傳和下載所使用的各個(gè)SDK的接口的實(shí)現(xiàn)方式和功能,更需要熟悉上傳和下載的各個(gè)任務(wù)環(huán)節(jié),并能夠正確選擇各個(gè)任務(wù)環(huán)節(jié)所使用的API接口。
[0004]但是,這種開發(fā)方式一方面對(duì)開發(fā)人員要求較高,造成開發(fā)困難,開發(fā)速度慢,開發(fā)成本高;另一方面,可能因?yàn)锳PI接口選擇的不恰當(dāng),造成開發(fā)出的任務(wù)效率低下,缺陷較多,需要后續(xù)不斷進(jìn)行版本升級(jí)和改進(jìn)。

【發(fā)明內(nèi)容】

[0005]鑒于上述現(xiàn)有的SDK實(shí)現(xiàn)文件下載時(shí),開發(fā)速度慢,開發(fā)成本高,效率低下,缺陷較多的問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的SDK實(shí)現(xiàn)文件下載的方法與裝置。
[0006]依據(jù)本發(fā)明的一個(gè)方面,提供了一種軟件開發(fā)工具包實(shí)現(xiàn)文件下載的方法,所述軟件開發(fā)工具包應(yīng)用于云存儲(chǔ)系統(tǒng),所述方法包括:接收文件下載指令,所述文件下載指令中攜帶有待下載文件的信息;根據(jù)所述文件下載指令和所述待下載文件的信息,從云存儲(chǔ)端獲取所述待下載文件,并且,獲取下載所述待下載文件的統(tǒng)一上下文環(huán)境;通過下載接口中設(shè)定的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用所述下載接口中封裝的多個(gè)文件下載函數(shù),使所述多個(gè)文件下載函數(shù)使用所述統(tǒng)一上下文環(huán)境進(jìn)行所述待下載文件的下載。
[0007]可選地,所述多個(gè)文件下載函數(shù)通過以下方式預(yù)先封裝在所述下載接口中:對(duì)所述云存儲(chǔ)系統(tǒng)的文件下載流程進(jìn)行分析,從所有文件下載函數(shù)中獲取完成文件下載任務(wù)的基本函數(shù);將所述基本函數(shù)抽象為所述應(yīng)用回調(diào)信息類,并根據(jù)所述基本函數(shù)定義所述應(yīng)用回調(diào)信息類中的成員變量;使用所述成員變量在所述基本函數(shù)間傳遞參數(shù),并按照所述文件下載流程確定所述基本函數(shù)的調(diào)用順序;將所述應(yīng)用回調(diào)信息類和確定了調(diào)用順序的所述基本函數(shù)封裝成所述下載接口。[0008]可選地,所述下載接口中還封裝有下載歷史記錄函數(shù);在所述接收文件下載指令的步驟之后,還包括:使用所述下載接口中的所述應(yīng)用回調(diào)信息類中的成員變量,調(diào)用所述下載接口中封裝的所述下載歷史記錄函數(shù),通過所述下載歷史記錄函數(shù)判斷發(fā)送所述文件下載指令的客戶端是否已下載過所述待下載文件;若已下載過,則判斷所述客戶端中已下載的所述待下載文件是否有效;若有效,則結(jié)束所述待下載文件的下載;若無效或者若未下載過所述待下載文件,則執(zhí)行所述根據(jù)所述文件下載指令和所述待下載文件的信息,從云存儲(chǔ)端獲取所述待下載文件,并且,獲取下載所述待下載文件的統(tǒng)一上下文環(huán)境的步驟。
[0009]可選地,所述下載接口中還封裝有下載線程參數(shù);在所述根據(jù)所述文件下載指令和所述待下載文件的信息,從云存儲(chǔ)端獲取所述待下載文件,并且,獲取下載所述待下載文件的統(tǒng)一上下文環(huán)境的步驟之前,還包括:接收下載線程參數(shù)設(shè)置指令,根據(jù)所述下載線程參數(shù)設(shè)置指令設(shè)置的下載線程參數(shù),啟動(dòng)所述下載線程參數(shù)指示數(shù)量的下載線程進(jìn)行所述待下載文件的下載。
[0010]可選地,所述通過下載接口中設(shè)定的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用所述下載接口中封裝的多個(gè)文件下載函數(shù)的步驟包括:所述下載接口通過使用設(shè)定的應(yīng)用回調(diào)信息類中的成員變量以及句柄參數(shù),調(diào)用所述下載接口中封裝的多個(gè)文件下載函數(shù);其中,所述句柄參數(shù)用于在所述多個(gè)文件下載函數(shù)之間傳達(dá)消息。
[0011]根據(jù)本發(fā)明的另一方面,提供了一種軟件開發(fā)工具包實(shí)現(xiàn)文件下載的裝置,所述軟件開發(fā)工具包應(yīng)用于云存儲(chǔ)系統(tǒng),所述裝置包括:接收模塊,用于接收文件下載指令,所述文件下載指令中攜帶有待下載文件的信息;獲取模塊,用于根據(jù)所述文件下載指令和所述待下載文件的信息,從云存儲(chǔ)端獲取所述待下載文件,并且,獲取下載所述待下載文件的統(tǒng)一上下文環(huán)境;下載模塊,用于通過下載接口中設(shè)定的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用所述下載接口中封裝的多個(gè)文件下載函數(shù),使所述多個(gè)文件下載函數(shù)使用所述統(tǒng)一上下文環(huán)境進(jìn)行所述待下載文件的下載。
[0012]可選地,所述軟件開發(fā)工具包實(shí)現(xiàn)文件下載的裝置還包括:封裝模塊,用于將所述多個(gè)文件下載函數(shù)通過以下方式預(yù)先封裝在所述上下載接口中:對(duì)所述云存儲(chǔ)系統(tǒng)的文件下載流程進(jìn)行分析,從所有文件下載函數(shù)中獲取完成文件下載任務(wù)的基本函數(shù);將所述基本函數(shù)抽象為所述應(yīng)用回調(diào)信息類,并根據(jù)所述基本函數(shù)定義所述應(yīng)用回調(diào)信息類中的成員變量;使用所述成員變量在所述基本函數(shù)間傳遞參數(shù),并按照所述文件下載流程確定所述基本函數(shù)的調(diào)用順序;將所述應(yīng)用回調(diào)信息類和確定了調(diào)用順序的所述基本函數(shù)封裝成所述下載接口。
[0013]可選地,所述下載接口中還封裝有下載歷史記錄函數(shù);所述軟件開發(fā)工具包實(shí)現(xiàn)文件下載的裝置還包括:有效判定模塊,用于在所述接收模塊接收文件下載指令之后,使用所述下載接口中的所述應(yīng)用回調(diào)信息類中的成員變量,調(diào)用所述下載接口中封裝的所述下載歷史記錄函數(shù),通過所述下載歷史記錄函數(shù)判斷發(fā)送所述文件下載指令的客戶端是否已下載過所述待下載文件;若已下載過,則判斷所述客戶端中已下載的所述待下載文件是否有效;若有效,則結(jié)束所述待下載文件的下載;若無效或者若未下載過所述待下載文件,則進(jìn)入所述獲取模塊。
[0014]可選地,所述下載接口中還封裝有下載線程參數(shù);所述軟件開發(fā)工具包實(shí)現(xiàn)文件下載的裝置還包括:線程設(shè)置模塊,用于在所述獲取模塊根據(jù)所述文件下載指令和所述待下載文件的信息,從云存儲(chǔ)端獲取所述待下載文件,并且,獲取下載所述待下載文件的統(tǒng)一上下文環(huán)境之前,接收下載線程參數(shù)設(shè)置指令,根據(jù)所述下載線程參數(shù)設(shè)置指令設(shè)置的下載線程參數(shù),啟動(dòng)所述下載線程參數(shù)指示數(shù)量的下載線程進(jìn)行所述待下載文件的下載。
[0015]可選地,所述下載模塊在通過下載接口中設(shè)定的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用所述下載接口中封裝的多個(gè)文件下載函數(shù)時(shí):由所述下載接口通過使用設(shè)定的應(yīng)用回調(diào)信息類中的成員變量以及句柄參數(shù),調(diào)用所述下載接口中封裝的多個(gè)文件下載函數(shù);其中,所述句柄參數(shù)用于在所述多個(gè)文件下載函數(shù)之間傳達(dá)消息。
[0016]本申請(qǐng)中,SDK的下載接口提供了較好的對(duì)外合作機(jī)制,該下載接口通過對(duì)云存儲(chǔ)端下載文件的方法進(jìn)行抽象和封裝,生成具有應(yīng)用回調(diào)信息類中的成員變量和多個(gè)文件下載函數(shù)。在使用該SDK進(jìn)行文件下載時(shí),一次性獲取下載待下載文件的統(tǒng)一上下文環(huán)境,在該統(tǒng)一上下文環(huán)境下,通過下載接口中的應(yīng)用回調(diào)信息類中的成員變量調(diào)用文件下載函數(shù),即可實(shí)現(xiàn)文件下載,無需開發(fā)人員熟悉下載文件所使用的各個(gè)SDK的接口的實(shí)現(xiàn)方式和功能,也無需開發(fā)人員熟悉下載文件的各個(gè)任務(wù)環(huán)節(jié)和各個(gè)任務(wù)環(huán)節(jié)所使用的API接口,從而大幅減少了開發(fā)人員的開發(fā)難度和提高了開發(fā)效率和開發(fā)質(zhì)量,加快了開發(fā)速度,降低了開發(fā)成本,有效避免了開發(fā)缺陷。
[0017]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【專利附圖】

【附圖說明】
[0018]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0019]圖1是根據(jù)本發(fā)明實(shí)施例一的一種SDK實(shí)現(xiàn)文件下載的方法的步驟流程圖;
[0020]圖2是根據(jù)本發(fā)明實(shí)施例二的一種SDK實(shí)現(xiàn)文件下載的方法的步驟流程圖;
[0021]圖3是根據(jù)本發(fā)明實(shí)施例三的一種SDK實(shí)現(xiàn)文件下載的方法的步驟流程圖;
[0022]圖4是根據(jù)本發(fā)明實(shí)施例四的一種SDK實(shí)現(xiàn)文件下載的裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0023]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0024]實(shí)施例一
[0025]參照?qǐng)D1,示出了根據(jù)本發(fā)明實(shí)施例一的一種SDK實(shí)現(xiàn)文件下載的方法的步驟流程圖。
[0026]本實(shí)施例的SDK實(shí)現(xiàn)文件下載的方法應(yīng)用于云存儲(chǔ)系統(tǒng),該方法包括以下步驟:
[0027]步驟S102:接收文件下載指令。
[0028]其中,該文件下載指令中攜帶有待下載文件的信息。[0029]當(dāng)客戶端需要下載文件時(shí),會(huì)向云存儲(chǔ)端服務(wù)器發(fā)送文件下載指令,該指令中攜帶有待下載文件的相關(guān)信息,如待下載文件所在的位置,文件大小、待存儲(chǔ)的位置等等信息。云存儲(chǔ)端服務(wù)器從文件下載指令中獲取這些待下載文件的信息。
[0030]步驟S104:根據(jù)文件下載指令和待下載文件的信息,從云存儲(chǔ)端獲取待下載文件,并且,獲取下載待下載文件的統(tǒng)一上下文環(huán)境。
[0031]云存儲(chǔ)系統(tǒng)包括客戶端和云端,云端包括至少一臺(tái)用于存儲(chǔ)數(shù)據(jù)的服務(wù)器,本發(fā)明實(shí)施例中簡(jiǎn)稱為云存儲(chǔ)端,該云存儲(chǔ)端存儲(chǔ)有待下載的文件。
[0032]其中,與傳統(tǒng)下載文件時(shí),每調(diào)用一個(gè)函數(shù)或接口需要獲取一次上下文環(huán)境不同,本發(fā)明中,云存儲(chǔ)端服務(wù)器在獲取待下載文件時(shí),獲取下載待下載文件的統(tǒng)一上下文環(huán)境,該統(tǒng)一上下文環(huán)境僅需一次獲取,并在后續(xù)該待下載文件的所有下載過程中使用。
[0033]步驟S106:通過下載接口中設(shè)定的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用下載接口中封裝的多個(gè)文件下載函數(shù),使多個(gè)文件下載函數(shù)使用統(tǒng)一上下文環(huán)境進(jìn)行待下載文件的下載。
[0034]下載接口中的應(yīng)用回調(diào)信息類中的成員變量和多個(gè)文件下載函數(shù)為對(duì)云存儲(chǔ)系統(tǒng)的文件下載流程進(jìn)行分析后確定,可以僅包括實(shí)現(xiàn)文件下載功能的基本函數(shù)(也即核心函數(shù),基本函數(shù)中的任何一個(gè)缺少都不能夠完成文件下載功能),如,獲取下載文件的相關(guān)數(shù)據(jù)(包括文件名、大小、位置、文件上下文環(huán)境、文件數(shù)據(jù)等)對(duì)應(yīng)的各個(gè)函數(shù),以及根據(jù)下載文件相關(guān)數(shù)據(jù)將文件下載至指定位置對(duì)應(yīng)的各個(gè)函數(shù);而其它功能函數(shù)則可排除在外,如,文件下載進(jìn)度顯示函數(shù)、界面提示函數(shù)等等不影響文件下載功能的函數(shù)都可排除在外。
[0035]應(yīng)用回調(diào)信息類中的成員變量可以將多個(gè)文件下載函數(shù)按照文件下載任務(wù)的執(zhí)行順序連接起來,在獲取的統(tǒng)一上下文環(huán)境中依次執(zhí)行,實(shí)現(xiàn)文件的下載。如上所述,各個(gè)文件下載函數(shù)在執(zhí)行時(shí),均使用已獲取的統(tǒng)一上下文環(huán)境,無需分別逐次獲取。
[0036]通過本實(shí)施例,SDK的下載接口提供了較好的對(duì)外合作機(jī)制,該下載接口通過對(duì)云存儲(chǔ)端下載文件的方法進(jìn)行抽象和封裝,生成具有應(yīng)用回調(diào)信息類中的成員變量和多個(gè)文件下載函數(shù)。在使用該SDK進(jìn)行文件下載時(shí),一次性獲取下載待下載文件的統(tǒng)一上下文環(huán)境,在該統(tǒng)一上下文環(huán)境下,通過下載接口中的應(yīng)用回調(diào)信息類中的成員變量調(diào)用文件下載函數(shù),即可實(shí)現(xiàn)文件下載,無需開發(fā)人員熟悉下載文件所使用的各個(gè)SDK的接口的實(shí)現(xiàn)方式和功能,也無需開發(fā)人員熟悉下載文件的各個(gè)任務(wù)環(huán)節(jié)和各個(gè)任務(wù)環(huán)節(jié)所使用的API接口,從而大幅減少了開發(fā)人員的開發(fā)難度和提高了開發(fā)效率和開發(fā)質(zhì)量,加快了開發(fā)速度,降低了開發(fā)成本,有效避免了開發(fā)缺陷。
[0037]實(shí)施例二
[0038]參照?qǐng)D2,示出了根據(jù)本發(fā)明實(shí)施例二的一種SDK實(shí)現(xiàn)文件下載的方法的步驟流程圖。
[0039]本實(shí)施例的SDK實(shí)現(xiàn)文件下載的方法應(yīng)用于云存儲(chǔ)系統(tǒng),該方法包括以下步驟:
[0040]步驟S202:封裝SDK的下載接口。
[0041]本實(shí)施例中,一種優(yōu)選的封裝SDK下載接口的方式包括:對(duì)云存儲(chǔ)系統(tǒng)的文件下載流程進(jìn)行分析,從所有文件下載函數(shù)中獲取完成文件下載任務(wù)的基本函數(shù);將基本函數(shù)抽象為應(yīng)用回調(diào)信息類,并根據(jù)基本函數(shù)定義應(yīng)用回調(diào)信息類中的成員變量;使用成員變量在基本函數(shù)間傳遞參數(shù),并按照文件下載流程確定基本函數(shù)的調(diào)用順序;將應(yīng)用回調(diào)信息類和確定了調(diào)用順序的基本函數(shù)封裝成SDK的下載接口。
[0042]上述對(duì)云存儲(chǔ)系統(tǒng)的文件下載流程進(jìn)行分析,從所有文件下載函數(shù)中獲取完成文件下載任務(wù)的基本函數(shù),以及,將基本函數(shù)抽象為應(yīng)用回調(diào)信息類,并根據(jù)基本函數(shù)定義應(yīng)用回調(diào)信息類中的成員變量的過程在實(shí)際操作中,可以由本領(lǐng)域技術(shù)人員人工完成,也可以采用成熟的人工智能模型實(shí)現(xiàn),當(dāng)然,其它可行的適當(dāng)方式也同樣適用。
[0043]在一個(gè)優(yōu)選實(shí)施例中,SDK的下載接口中還封裝了下載線程參數(shù),該下載線程參數(shù)用于指示下載所述待下載文件時(shí)使用的線程數(shù)量。通過下載線程參數(shù),可以靈活地對(duì)下載文件的線程數(shù)量進(jìn)行設(shè)置,提高文件下載的靈活性。
[0044]步驟S204 =SDK接收文件下載指令,該文件下載指令中攜帶有待下載文件的信息。
[0045]步驟S206 =SDK根據(jù)文件下載指令和待下載文件的信息,從云存儲(chǔ)端獲取待下載文件,并且,獲取下載所述待下載文件的統(tǒng)一上下文環(huán)境。
[0046]該統(tǒng)一上下文環(huán)境在本實(shí)施例的后續(xù)文件下載過程中一直使用。
[0047]優(yōu)選地,當(dāng)SDK的下載接口中封裝有下載線程參數(shù)時(shí),在SDK根據(jù)文件下載指令和待下載文件的信息,從云存儲(chǔ)端獲取待下載文件,并且,獲取下載所述待下載文件的統(tǒng)一上下文環(huán)境的步驟之前,還包括:接收下載線程參數(shù)設(shè)置指令,根據(jù)下載線程參數(shù)設(shè)置指令設(shè)置的下載線程參數(shù),啟動(dòng)下載線程參數(shù)指示數(shù)量的下載線程進(jìn)行待下載的文件的下載。如,下載線程參數(shù)設(shè)置指令中的下載線程參數(shù)指示使用5個(gè)線程進(jìn)行文件下載,則SDK下載接口會(huì)啟動(dòng)5個(gè)線程從云存儲(chǔ)端獲取待下載文件的文件數(shù)據(jù)塊,進(jìn)而進(jìn)行文件下載。其中,下載線程參數(shù)設(shè)置指令可以由下載文件的設(shè)備針對(duì)每個(gè)待下載的文件設(shè)置并發(fā)送,也可以采用默認(rèn)的設(shè)置值,發(fā)送給SDK。
[0048]步驟S208:SDK通過下載接口中設(shè)定的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用下載接口中封裝的多個(gè)文件下載函數(shù)。
[0049]在一個(gè)可選實(shí)施例中,下載接口通過使用設(shè)定的應(yīng)用回調(diào)信息類中的成員變量以及句柄參數(shù),調(diào)用下載接口中封裝的多個(gè)文件下載函數(shù);其中,所述句柄參數(shù)用于在多個(gè)文件下載函數(shù)之間傳達(dá)消息。
[0050]步驟S210 =SDK使用多個(gè)文件下載函數(shù)使用統(tǒng)一上下文環(huán)境進(jìn)行待下載文件的下載。
[0051 ] 在本發(fā)明的一個(gè)可選實(shí)施例中,下載接口中還封裝有下載歷史記錄函數(shù)。當(dāng)下載接口中封裝有下載歷史記錄函數(shù)時(shí),在SDK接收文件下載指令的步驟之后,還包括:使用下載接口中的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用下載接口中封裝的下載歷史記錄函數(shù),通過下載歷史記錄函數(shù)判斷發(fā)送文件下載指令的客戶端是否已下載過待下載文件;若已下載過,則判斷客戶端中已下載的待下載文件是否有效;若有效,則結(jié)束待下載文件的下載;若無效或者若未下載過待下載文件,則執(zhí)行步驟S206。通過下載歷史記錄函數(shù),可以有效避免文件的重復(fù)下載。
[0052]通過本實(shí)施例,在使用SDK進(jìn)行文件下載時(shí),一次性獲取下載待下載文件的統(tǒng)一上下文環(huán)境,在該統(tǒng)一上下文環(huán)境下,通過下載接口中的應(yīng)用回調(diào)信息類中的成員變量調(diào)用文件下載函數(shù),即可實(shí)現(xiàn)文件下載,無需開發(fā)人員熟悉下載文件所使用的各個(gè)SDK的接口的實(shí)現(xiàn)方式和功能,也無需開發(fā)人員熟悉下載文件的各個(gè)任務(wù)環(huán)節(jié)和各個(gè)任務(wù)環(huán)節(jié)所使用的API接口,從而大幅減少了開發(fā)人員的開發(fā)難度和提高了開發(fā)效率和開發(fā)質(zhì)量,加快了開發(fā)速度,降低了開發(fā)成本,有效避免了開發(fā)缺陷。
[0053]實(shí)施例三
[0054]本實(shí)施例以具體實(shí)例對(duì)本發(fā)明的SDK實(shí)現(xiàn)文件下載的方法進(jìn)行說明,該方法應(yīng)用于云存儲(chǔ)系統(tǒng)。
[0055]本實(shí)施例的SDK實(shí)現(xiàn)文件下載的方法包括以下步驟:
[0056]步驟一:生成SDK的下載接口。
[0057]以下,從多個(gè)方面對(duì)生成SDK的下載接口的過程進(jìn)行說明。
[0058](一)軟件環(huán)境需求:
[0059]a、開發(fā)環(huán)境:android2.I 及 2.I 以上;
[0060]b、需要的權(quán)限:至少包括生成SDK所需要進(jìn)行的訪問的權(quán)限,以android應(yīng)用的權(quán)
限配置為例,如:
[0061]
<uses-permission andiOid:name=!,andiOid.permission.1NTERNET" />
//訪問INTERNET的權(quán)限 <uses-permission android:name=
"andiOid.permission.WRITE_EXTERNAL_STORAGE"/>
//寫外部存儲(chǔ)器的權(quán)限 <uses-permission androidmame=

"android.pennission.READ_PHONE_STATE"/>
//讀手機(jī)狀態(tài)的權(quán)限
[0062]C、必要條件
[0063](I)、設(shè)置Aplication (應(yīng)用)對(duì)象,通過獲取應(yīng)用的Aplication對(duì)象,可以讓SDK得到當(dāng)前應(yīng)用的上下文環(huán)境,如當(dāng)前下載的文件的統(tǒng)一上下文環(huán)境。Application對(duì)象是android框架的一個(gè)系統(tǒng)組件,當(dāng)android程序啟動(dòng)時(shí)系統(tǒng)會(huì)創(chuàng)建一個(gè)application對(duì)象,用來存儲(chǔ)系統(tǒng)的一些信息。android系統(tǒng)會(huì)為每個(gè)程序運(yùn)行時(shí)創(chuàng)建一個(gè)Application類的對(duì)象且僅創(chuàng)建一個(gè),所以Application可以說是單例(singleton)模式的一個(gè)類,且Application對(duì)象的生命周期·是整個(gè)程序中最長(zhǎng)的,它的生命周期就等于這個(gè)程序的生命周期。因?yàn)樗侨值膯卫?,所以通過Application對(duì)象來進(jìn)行一些數(shù)據(jù)傳遞、數(shù)據(jù)共享、數(shù)據(jù)緩存等操作。
[0064]如:設(shè)置
[0065]com.q i ho ο.yunpan.s dk.android, conf i g.YunpanApplication.setApplication()方法;
[0066]或者,設(shè)置
[0067]〈application android:name=
[0068]"com.qiho0.yunpan.sdk.android, conf ig.YunpanApplication^./> 中的一個(gè)。
[0069](2)、設(shè)置開發(fā)權(quán)限
[0070]如,key(AUTH_NAME, AUTH_KEY, AUTH_SECRET)必須賦值給 com.qiho0.yunpan.sdk.android, conf ig.YunpanSDKConstants 中對(duì)應(yīng)的值。
[0071](3)、必須實(shí)現(xiàn)
[0072]com.qiho0.yunpan.sdk.android, conf ig.YunpanSDKConstant s.setYunpanlnterface (IYunpanInterface yunpanlnterface)接口,以保證實(shí)現(xiàn)文件下載任務(wù)的安全性。
[0073]通過該接口 實(shí)現(xiàn) onNewUserToken 函數(shù)和 onUserCookielnvalid 函數(shù),其中,onNewUserToken函數(shù)用于刷新用戶token, onUserCookielnvalid用于當(dāng)用戶cookie失效時(shí),要求用戶必須重新登陸。
[0074](二)
[0075]對(duì)云存儲(chǔ)系統(tǒng)的文件下載流程進(jìn)行分析,從所有文件下載函數(shù)中獲取完成文件下載任務(wù)的基本函數(shù);將基本函數(shù)抽象為應(yīng)用回調(diào)信息類,并根據(jù)基本函數(shù)定義應(yīng)用回調(diào)信息類中的成員變量;使用成員變量在基本函數(shù)間傳遞參數(shù),并按照文件下載流程確定基本函數(shù)的調(diào)用順序;將應(yīng)用回調(diào)信息類和確定了調(diào)用順序的基本函數(shù)封裝成SDK的下載接口。例如,云存儲(chǔ)系統(tǒng)在進(jìn)行文件下載時(shí),由客戶端發(fā)送文件下載指令,而云存儲(chǔ)端服務(wù)器接收到文件下載指令后,得知有文件下載任務(wù),開始獲取文件數(shù)據(jù)塊,進(jìn)而根據(jù)文件下載指令將獲取到的文件數(shù)據(jù)塊下載至指定位置。對(duì)該流程進(jìn)行分析后,確定對(duì)于SDK來說,獲取下載文件的相關(guān)數(shù)據(jù)(包括文件名、大小、位置、文件上下文環(huán)境、文件數(shù)據(jù)等)對(duì)應(yīng)的各個(gè)函數(shù),以及根據(jù)下載文件相關(guān)數(shù)據(jù)將文件下載至指定位置對(duì)應(yīng)的各個(gè)函數(shù)均可被認(rèn)為是基本函數(shù),對(duì)這些基本函數(shù)進(jìn)行抽象和封裝,最終生成SDK的下載接口。
[0076](I)抽象成的統(tǒng)一的應(yīng)用回調(diào)信息類為:
[0077]Class com.qiho0.yunpan.sdk.android, task.TransferStatus ;其包括的成員變
量有:
[0078]名稱:actionType
[0079]類型:ActionType,描述:當(dāng)前傳送狀態(tài)
[0080]名稱:localFileName
[0081]類型:String,描述:本地文件名
[0082]名稱:remoteFileName
[0083]類型:String,描述:云存儲(chǔ)端文件名
[0084]名稱:requestCode
[0085]類型:String,描述:請(qǐng)求code (應(yīng)用自行控制)
[0086]其中,ActionType(消息類型枚舉)為 com.qiho0.yunpan.sdk.android, task.TransferStatus.ActionType,其值包括:
[0087]名稱:NULL
[0088]描述:無意義
[0089]名稱:D0WNL0AD_PR0CESSING
[0090]描述:下載任務(wù)處理中
[0091]名稱:D0WNL0AD_TRANSFER_DATA
[0092]描述:下載任務(wù)中正在下載數(shù)據(jù)
[0093]名稱:D0WNL0AD_C0MPLETE
[0094]描述:下載任務(wù)完成[0095](2)構(gòu)造文件下載函數(shù),實(shí)現(xiàn)文件下載任務(wù)
[0096]如,生成 Class com.qiho0.yunpan.sdk.android, task.DownloadTask 類
[0097]構(gòu)造函數(shù):DownloadTask()
[0098]參數(shù)1:(名稱:localFileName,類型:String,描述:本地文件名)
[0099]參數(shù)2:(名稱:remoteFileName,類型:String,描述:云存儲(chǔ)端文件名)
[0100]參數(shù)3:(名稱:download_handler,類型:Handler,描述:傳達(dá)消息)
[0101]實(shí)現(xiàn)上述應(yīng)用回調(diào)信息類和下載函數(shù)后,即可封裝為下載接口向外提供。
[0102]優(yōu)選地,在下載接口中還可以設(shè)置下載進(jìn)度步長(zhǎng):(默認(rèn)為5%觸發(fā)一次,最小1,最大20),可以通過調(diào)用setProgressStep O和getProgressStep O方法設(shè)置返回?cái)?shù)據(jù)集的位置。
[0103]優(yōu)選地,在下載接口中還可以設(shè)置停止當(dāng)前任務(wù):(如果重新開始,請(qǐng)將當(dāng)前任務(wù)重新在線程容器中啟動(dòng)),可以通過調(diào)用setlsRun(false)停止當(dāng)前任務(wù)。
[0104]優(yōu)選地,在下載接口中還可以設(shè)置單任務(wù)運(yùn)行時(shí)的線程數(shù):(默認(rèn)為1,最大5),可以通過調(diào)用SetDownloadThreadNum (下載任務(wù)線程數(shù))設(shè)置。通過設(shè)置線程數(shù),實(shí)現(xiàn)SDK封裝的下載任務(wù)支持JAVA標(biāo)準(zhǔn)的多線程環(huán)境。
[0105]其它主要云盤SDK方法還包括:
[0106]a、用戶注冊(cè)(UserIntfRegister)
[0107]生成Class com.qiho0.yunpan.sdk.android, http, action.UserIntfRegister類
[0108]構(gòu)造函數(shù)如下:
[0109]函數(shù)名:doUserIntfRegister()
[0110]參數(shù)I:(名稱:userName,類型:String,描述:用戶名)
[0111]參數(shù)2:(名稱:passfford,類型:String,描述:密碼)
[0112](如果調(diào)用完獲取驗(yàn)證碼接口后,請(qǐng)將sc參數(shù)通過setScO傳入,setCaptcha ()方法傳入用戶輸入的驗(yàn)證碼)
[0113]返回類型:UserCenterInfo
[0114](如果返回值中的errno=5010,需要調(diào)用方法獲取驗(yàn)證碼(UserIntfGetCaptcha)獲取)
[0115]b、用戶登錄(UserIntfLogin)
[0116]生成 Class com.qiho0.yunpan.sdk.android, http, action.UserIntfLogin 類
[0117]構(gòu)造函數(shù)如下:
[0118]函數(shù)名:loginO
[0119]參數(shù)I:(名稱:username,類型:String,描述:用戶名)
[0120]參數(shù)2:(名稱:passfford,類型:String,描述:密碼)
[0121]參數(shù)3:(名稱:captcha,類型:String,描述:用戶輸入的驗(yàn)證碼)
[0122]參數(shù)4:(名稱:sc,類型:String,描述:服務(wù)器返回的sc參數(shù))
[0123](如果調(diào)用完獲取驗(yàn)證碼接口后,請(qǐng)將captcha和sc參數(shù)賦值,沒有驗(yàn)證碼時(shí)給空值)
[0124]返回類型:UserCenterInfo
[0125](如果返回值中的errno=5010,需要調(diào)用方法獲取驗(yàn)證碼(UserIntfGetCaptcha)獲取)
[0126]C、獲取云盤列表(FileGetNodeList)
[0127]生成 Class com.qiho0.yunpan.sdk.android, http, action.getNodeList 類
[0128]構(gòu)造函數(shù)如下:
[0129]函數(shù)名:getNodeList()
[0130]參數(shù):(名稱:path,類型:String,描述:云盤目錄,/為根目錄)
[0131]返回類型:FileNodeList
[0132]分頁(yè)功能:(兩項(xiàng)同時(shí)設(shè)置才生效,默認(rèn)為從O開始全部)
[0133]包括:通過調(diào)用setStartO和getStart O方法設(shè)置返回?cái)?shù)據(jù)集的位置,通過調(diào)用setCountO和getCount O方法設(shè)置返回?cái)?shù)據(jù)集的數(shù)量;實(shí)現(xiàn)排序功能:通過調(diào)用SetOrderParamO和get0rderParam()方法設(shè)置排序字段(默認(rèn)為按文件名排序),通過調(diào)用setlsdescO和isIsdescO方法設(shè)置正序或倒序(默認(rèn)為正序);設(shè)置內(nèi)部類
[0134]enum com.qiho0.yunpan.sdk.android, http, action.getNodeList.0rderType
[0135]該內(nèi)部類枚舉類型的值包括:
[0136]名稱:name
[0137]描述:按文件名
[0138]名稱:mtime
[0139]描述:按修改時(shí)間
[0140]名稱:fsize
[0141]描述:按文件大小
[0142]上述其它主要云盤SDK方法中的一種或多種均可以可選方式封裝入下載接口中,為用戶下載文件提供更好的使用體驗(yàn)。
[0143]步驟二:使用生成的SDK下載接口下載文件。
[0144]一種使用步驟一中生成的下載接口下載文件的流程如圖3所示,該流程包括:
[0145]步驟S302:接收文件下載指令,下載任務(wù)開始。
[0146]步驟S304:SDK下載接口中的文件下載函數(shù)獲取下載任務(wù)信息。
[0147]其中,獲取的下載任務(wù)信息包括:待下載文件的信息和待下載文件的統(tǒng)一上下文環(huán)境。
[0148]步驟S306 =SDK下載接口中的文件下載函數(shù)判斷待下載的文件數(shù)據(jù)在客戶端本地是否已存在,若否,則執(zhí)行步驟S308 ;若是,則執(zhí)行步驟S312。
[0149]步驟S308:SDK下載接口中的文件下載函數(shù)獲取待下載的文件的文件塊信息。
[0150]步驟S310:若本次文件下載完成,則轉(zhuǎn)步驟S312 ;否則,本次文件下載失敗。
[0151]步驟S312:SDK下載接口中的文件下載函數(shù)提示下載完成。
[0152]通過本實(shí)施例,實(shí)現(xiàn)了在android系統(tǒng)的移動(dòng)終端上,通過SDK實(shí)現(xiàn)文件下載的任務(wù),大幅減少了移動(dòng)終端開發(fā)人員的開發(fā)難度和提高了移動(dòng)終端開發(fā)效率和開發(fā)質(zhì)量,力口快了開發(fā)速度,降低了開發(fā)成本,有效避免了開發(fā)缺陷。
[0153]實(shí)施例四
[0154]參照?qǐng)D4,示出了根據(jù)本發(fā)明實(shí)施例四的一種SDK實(shí)現(xiàn)文件下載的裝置的結(jié)構(gòu)框圖。[0155]本實(shí)施例的SDK實(shí)現(xiàn)文件下載的裝置中的SDK應(yīng)用于云存儲(chǔ)系統(tǒng),該裝置包括:接收模塊402,用于接收文件下載指令,該文件下載指令中攜帶有待下載文件的信息;獲取模塊404,用于根據(jù)文件下載指令和待下載文件的信息,從云存儲(chǔ)端獲取待下載文件,并且,獲取下載待下載文件的統(tǒng)一上下文環(huán)境;下載模塊406,用于通過下載接口中設(shè)定的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用下載接口中封裝的多個(gè)文件下載函數(shù),使多個(gè)文件下載函數(shù)使用統(tǒng)一上下文環(huán)境進(jìn)行待下載文件的下載。
[0156]優(yōu)選地,本實(shí)施例的SDK實(shí)現(xiàn)文件下載的裝置還包括:封裝模塊408,用于將多個(gè)文件下載函數(shù)通過以下方式預(yù)先封裝在上下載接口中:對(duì)云存儲(chǔ)系統(tǒng)的文件下載流程進(jìn)行分析,從所有文件下載函數(shù)中獲取完成文件下載任務(wù)的基本函數(shù);將基本函數(shù)抽象為應(yīng)用回調(diào)信息類,并根據(jù)基本函數(shù)定義應(yīng)用回調(diào)信息類中的成員變量;使用成員變量在基本函數(shù)間傳遞參數(shù),并按照文件下載流程確定基本函數(shù)的調(diào)用順序;將應(yīng)用回調(diào)信息類和確定了調(diào)用順序的基本函數(shù)封裝成下載接口。
[0157]優(yōu)選地,下載接口中還封裝有下載歷史記錄函數(shù);本實(shí)施例的SDK實(shí)現(xiàn)文件下載的裝置還包括:有效判定模塊410,用于在接收模塊402接收文件下載指令之后,使用下載接口中的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用下載接口中封裝的下載歷史記錄函數(shù),通過下載歷史記錄函數(shù)判斷發(fā)送文件下載指令的客戶端是否已下載過待下載文件;若已下載過,則判斷客戶端中已下載的待下載文件是否有效;若有效,則結(jié)束待下載文件的下載;若無效或者若未下載過待下載文件,則進(jìn)入獲取模塊404。
[0158]優(yōu)選地,下載接口中還封裝有下載線程參數(shù);;本實(shí)施例的SDK實(shí)現(xiàn)文件下載的裝置還包括:線程設(shè)置模塊412,用于在獲取模塊404根據(jù)文件下載指令和待下載文件的信息,從云存儲(chǔ)端獲取待下載文件,并且,獲取下載待下載文件的統(tǒng)一上下文環(huán)境之前,接收下載線程參數(shù)設(shè)置指令,根據(jù)下載線程參數(shù)設(shè)置指令設(shè)置的下載線程參數(shù),啟動(dòng)下載線程參數(shù)指示數(shù)量的下載線程進(jìn)行待下載文件的下載。
[0159]優(yōu)選地,下載模塊406在通過下載接口中設(shè)定的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用下載接口中封裝的多個(gè)文件下載函數(shù)時(shí):由下載接口通過使用設(shè)定的應(yīng)用回調(diào)信息類中的成員變量以及句柄參數(shù),調(diào)用下載接口中封裝的多個(gè)文件下載函數(shù);其中,句柄參數(shù)用于在多個(gè)文件下載函數(shù)之間傳達(dá)消息。
[0160]本實(shí)施例的SDK實(shí)現(xiàn)文件下載的裝置用于實(shí)現(xiàn)前述多個(gè)方法實(shí)施例中相應(yīng)的SDK實(shí)現(xiàn)文件下載的方法,并具有相應(yīng)的方法實(shí)施例的有益效果,在此不再贅述。
[0161]在此提供的SDK實(shí)現(xiàn)文件下載的方案不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造具有本發(fā)明方案的系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
[0162]在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。
[0163]類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
[0164]本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。
[0165]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
[0166]本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的SDK實(shí)現(xiàn)文件下載的方案中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
[0167]應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
【權(quán)利要求】
1.一種軟件開發(fā)工具包實(shí)現(xiàn)文件下載的方法,所述軟件開發(fā)工具包應(yīng)用于云存儲(chǔ)系統(tǒng),所述方法包括: 接收文件下載指令,所述文件下載指令中攜帶有待下載文件的信息; 根據(jù)所述文件下載指令和所述待下載文件的信息,從云存儲(chǔ)端獲取所述待下載文件,并且,獲取下載所述待下載文件的統(tǒng)一上下文環(huán)境; 通過下載接口中設(shè)定的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用所述下載接口中封裝的多個(gè)文件下載函數(shù),使所述多個(gè)文件下載函數(shù)使用所述統(tǒng)一上下文環(huán)境進(jìn)行所述待下載文件的下載。
2.根據(jù)權(quán)利要求1所述的方法,所述多個(gè)文件下載函數(shù)通過以下方式預(yù)先封裝在所述下載接口中: 對(duì)所述云存儲(chǔ)系統(tǒng)的文件下載流程進(jìn)行分析,從所有文件下載函數(shù)中獲取完成文件下載任務(wù)的基本函數(shù); 將所述基本函數(shù)抽象為所述應(yīng)用回調(diào)信息類,并根據(jù)所述基本函數(shù)定義所述應(yīng)用回調(diào)信息類中的成員變量; 使用所述成員變量在所述基本函數(shù)間傳遞參數(shù),并按照所述文件下載流程確定所述基本函數(shù)的調(diào)用順序; 將所述應(yīng)用回調(diào)信息類 和確定了調(diào)用順序的所述基本函數(shù)封裝成所述下載接口。
3.根據(jù)權(quán)利要求2所述的方法,所述下載接口中還封裝有下載歷史記錄函數(shù); 在所述接收文件下載指令的步驟之后,還包括: 使用所述下載接口中的所述應(yīng)用回調(diào)信息類中的成員變量,調(diào)用所述下載接口中封裝的所述下載歷史記錄函數(shù),通過所述下載歷史記錄函數(shù)判斷發(fā)送所述文件下載指令的客戶端是否已下載過所述待下載文件; 若已下載過,則判斷所述客戶端中已下載的所述待下載文件是否有效; 若有效,則結(jié)束所述待下載文件的下載; 若無效或者若未下載過所述待下載文件,則執(zhí)行所述根據(jù)所述文件下載指令和所述待下載文件的信息,從云存儲(chǔ)端獲取所述待下載文件,并且,獲取下載所述待下載文件的統(tǒng)一上下文環(huán)境的步驟。
4.根據(jù)權(quán)利要求2所述的方法,所述下載接口中還封裝有下載線程參數(shù); 在所述根據(jù)所述文件下載指令和所述待下載文件的信息,從云存儲(chǔ)端獲取所述待下載文件,并且,獲取下載所述待下載文件的統(tǒng)一上下文環(huán)境的步驟之前,還包括: 接收下載線程參數(shù)設(shè)置指令,根據(jù)所述下載線程參數(shù)設(shè)置指令設(shè)置的下載線程參數(shù),啟動(dòng)所述下載線程參數(shù)指示數(shù)量的下載線程進(jìn)行所述待下載文件的下載。
5.根據(jù)權(quán)利要求2所述的方法,所述通過下載接口中設(shè)定的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用所述下載接口中封裝的多個(gè)文件下載函數(shù)的步驟包括: 所述下載接口通過使用設(shè)定的應(yīng)用回調(diào)信息類中的成員變量以及句柄參數(shù),調(diào)用所述下載接口中封裝的多個(gè)文件下載函數(shù); 其中,所述句柄參數(shù)用于在所述多個(gè)文件下載函數(shù)之間傳達(dá)消息。
6.一種軟件開發(fā)工具包實(shí)現(xiàn)文件下載的裝置,所述軟件開發(fā)工具包應(yīng)用于云存儲(chǔ)系統(tǒng),所述裝置包括:接收模塊,用于接收文件下載指令,所述文件下載指令中攜帶有待下載文件的信息; 獲取模塊,用于根據(jù)所述文件下載指令和所述待下載文件的信息,從云存儲(chǔ)端獲取所述待下載文件,并且,獲取下載所述待下載文件的統(tǒng)一上下文環(huán)境; 下載模塊,用于通過下載接口中設(shè)定的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用所述下載接口中封裝的多個(gè)文件下載函數(shù),使所述多個(gè)文件下載函數(shù)使用所述統(tǒng)一上下文環(huán)境進(jìn)行所述待下載文件的下載。
7.根據(jù)權(quán)利要求6所述的裝置,所述裝置還包括: 封裝模塊,用于將所述多個(gè)文件下載函數(shù)通過以下方式預(yù)先封裝在所述上下載接口中: 對(duì)所述云存儲(chǔ)系統(tǒng)的文件下載流程進(jìn)行分析,從所有文件下載函數(shù)中獲取完成文件下載任務(wù)的基本函數(shù); 將所述基本函數(shù)抽象為所述應(yīng)用回調(diào)信息類,并根據(jù)所述基本函數(shù)定義所述應(yīng)用回調(diào)信息類中的成員變量; 使用所述成員變量在所述基本函數(shù)間傳遞參數(shù),并按照所述文件下載流程確定所述基本函數(shù)的調(diào)用順序; 將所述應(yīng)用回調(diào)信息類和確定了調(diào)用順序的所述基本函數(shù)封裝成所述下載接口。
8.根據(jù)權(quán)利要求7所述的裝置,所述下載接口中還封裝有下載歷史記錄函數(shù); 所述裝置還包括:` 有效判定模塊,用于在所述接收模塊接收文件下載指令之后,使用所述下載接口中的所述應(yīng)用回調(diào)信息類中的成員變量,調(diào)用所述下載接口中封裝的所述下載歷史記錄函數(shù),通過所述下載歷史記錄函數(shù)判斷發(fā)送所述文件下載指令的客戶端是否已下載過所述待下載文件; 若已下載過,則判斷所述客戶端中已下載的所述待下載文件是否有效; 若有效,則結(jié)束所述待下載文件的下載; 若無效或者若未下載過所述待下載文件,則進(jìn)入所述獲取模塊。
9.根據(jù)權(quán)利要求7所述的裝置,所述下載接口中還封裝有下載線程參數(shù); 所述裝置還包括: 線程設(shè)置模塊,用于在所述獲取模塊根據(jù)所述文件下載指令和所述待下載文件的信息,從云存儲(chǔ)端獲取所述待下載文件,并且,獲取下載所述待下載文件的統(tǒng)一上下文環(huán)境之前,接收下載線程參數(shù)設(shè)置指令,根據(jù)所述下載線程參數(shù)設(shè)置指令設(shè)置的下載線程參數(shù),啟動(dòng)所述下載線程參數(shù)指示數(shù)量的下載線程進(jìn)行所述待下載文件的下載。
10.根據(jù)權(quán)利要求7所述的裝置,所述下載模塊在通過下載接口中設(shè)定的應(yīng)用回調(diào)信息類中的成員變量,調(diào)用所述下載接口中封裝的多個(gè)文件下載函數(shù)時(shí): 由所述下載接口通過使用設(shè)定的應(yīng)用回調(diào)信息類中的成員變量以及句柄參數(shù),調(diào)用所述下載接口中封裝的多個(gè)文件下載函數(shù); 其中,所述句柄參數(shù)用于在所述多個(gè)文件下載函數(shù)之間傳達(dá)消息。
【文檔編號(hào)】H04L29/08GK103595770SQ201310522737
【公開日】2014年2月19日 申請(qǐng)日期:2013年10月29日 優(yōu)先權(quán)日:2013年10月29日
【發(fā)明者】張勁輝 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1