專利名稱:離線下載方法和離線下載服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種離線下載方法和離線下載服務(wù)器。
背景技術(shù):
隨著計(jì)算機(jī)和互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,用戶越來(lái)越多地希望更加便捷且不受硬件條件限制地進(jìn)行文件上傳、下載、分享等操作。目前存在的問(wèn)題是,用戶進(jìn)行下載操作時(shí),需要保持網(wǎng)絡(luò)連接。發(fā)明內(nèi)容
本發(fā)明旨在至少解決上述技術(shù)問(wèn)題之一。
為此,本發(fā)明的一個(gè)目的在于提出一種離線下載方法。該方法一方面免去了用戶下載資源時(shí)需要掛機(jī)的煩惱,提升了用戶體驗(yàn),另一方面提升了用戶下載資源的速度。
本發(fā)明的另一目的在于提出一種離線下載服務(wù)器。
為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明第一方面的實(shí)施例的離線下載方法包括以下步驟:用戶向離線下載服務(wù)器提交下載任務(wù);所述離線下載服務(wù)器判斷所述下載任務(wù)是否是已經(jīng)下載過(guò)的任務(wù);如果否,則根據(jù)所述下載任務(wù)判斷下載方式;根據(jù)所述下載方式將與所述下載任務(wù)對(duì)應(yīng)的資源下載到所述離線下載服務(wù)器;以及將所述資源拷貝到所述用戶的空間。
根據(jù)本發(fā)明實(shí)施例的離線下載方法,一方面通過(guò)離線下載服務(wù)器根據(jù)用戶提交的下載任務(wù)下載對(duì)應(yīng)的資源,免去了用戶下載資源時(shí)需要掛機(jī)的煩惱,提升了用戶體驗(yàn),另一方面通過(guò)離線下載服務(wù)器將該資源在用戶需要時(shí)拷貝到用戶的空間中,提升了用戶下載資源的速度。
為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明第二方面的實(shí)施例的離線下載服務(wù)器,包括:接收模塊,用于接收用戶提交的下載任務(wù);第一判斷模塊,用于判斷所述下載任務(wù)是否是已經(jīng)下載過(guò)的任務(wù);第二判斷模塊,用于當(dāng)所述下載任務(wù)不是已經(jīng)下載過(guò)的任務(wù)時(shí),根據(jù)所述下載任務(wù)判斷下載方式;下載模塊,用于根據(jù)所述下載方式將與所述下載任務(wù)對(duì)應(yīng)的資源下載到所述離線下載服務(wù)器;以及拷貝模塊,用于將所述資源拷貝到所述用戶的空間。
根據(jù)本發(fā)明實(shí)施例的離線下載服務(wù)器,一方面根據(jù)用戶提交的下載任務(wù)下載對(duì)應(yīng)的資源,免去了用戶下載資源時(shí)需要掛機(jī)的煩惱,提升了用戶體驗(yàn),另一方面將該資源在用戶需要時(shí)拷貝到用戶的空間中,提升了用戶下載資源的速度。
本發(fā)明附加的 方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。
本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中,
圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的離線下載方法的流程圖2是根據(jù)本發(fā)明一個(gè)具體實(shí)施例的離線下載方法的流程圖3是根據(jù)本發(fā)明另一個(gè)具體實(shí)施例的離線下載方法的流程圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的根據(jù)分塊下載方式進(jìn)行下載的流程圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的根據(jù)不分塊大文件下載方式進(jìn)行下載的流程圖6是根據(jù)本發(fā)明一個(gè)實(shí)施例的根據(jù)不分塊小文件下載方式進(jìn)行下載的流程圖7是根據(jù)本發(fā)明一個(gè)實(shí)施例的離線下載服務(wù)器從資源服務(wù)器以斷點(diǎn)續(xù)傳的方式下載資源的過(guò)程的流程圖8是根據(jù)本發(fā)明一個(gè)實(shí)施例的離線下載服務(wù)器的結(jié)構(gòu)示意圖9是根據(jù)本發(fā)明一個(gè)具體實(shí)施例的離線下載服務(wù)器的結(jié)構(gòu)示意圖;以及
圖10是根據(jù)本發(fā)明另一個(gè)具體實(shí)施例的離線下載服務(wù)器的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。相反,本發(fā)明的實(shí)施例包括落入所附加權(quán)利要求書的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。
在本發(fā)明的描述中,需要理解的是,術(shù)語(yǔ)“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性。在本發(fā)明的描述中,需要說(shuō)明的是,除非另有明確的規(guī)定和限定,術(shù)語(yǔ)“相連”、“連接”應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機(jī)械連接,也可以是電連接;可以是直接相連,也可以通過(guò)中間媒介間接相連。對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以具體情況理解上述術(shù)語(yǔ)在本發(fā)明中的具體含義。此外,在本發(fā)明的描述中,除非另有說(shuō)明,“多個(gè)”的含義是兩個(gè)或兩個(gè)以上。
流程圖中或在此以其他方式描述的任何過(guò)程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過(guò)程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來(lái)執(zhí)行功能,這應(yīng)被本發(fā)明的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
下面參考附圖描述根據(jù)本發(fā)明 實(shí)施例的離線下載方法和離線下載服務(wù)器。
目前,用戶可從多個(gè)資源服務(wù)器下載自己感興趣的多個(gè)資源存儲(chǔ)在個(gè)人電腦上,但是多個(gè)資源服務(wù)器對(duì)應(yīng)的下載資源可能不盡相同,并且需要保持網(wǎng)絡(luò)連接,如果利用離線下載服務(wù)器代替用戶從資源服務(wù)器下載資源并將所下載的資源拷貝到用戶的云存儲(chǔ)空間中,當(dāng)用戶想要該資源時(shí),可從云存儲(chǔ)空間中獲取該資源,由此可以免去用戶下載資源時(shí)必須保持網(wǎng)絡(luò)連接的煩惱,為此,本發(fā)明提出了一種離線下載方法,包括以下步驟:用戶向離線下載服務(wù)器提交下載任務(wù);離線下載服務(wù)器判斷下載任務(wù)是否是已經(jīng)下載過(guò)的任務(wù);如果否,則根據(jù)下載任務(wù)判斷下載方式;根據(jù)下載方式將與下載任務(wù)對(duì)應(yīng)的資源下載到離線下載服務(wù)器;以及將資源拷貝到用戶的空間。
圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的離線下載方法的流程圖。
如圖1所示,離線下載方法包括:
SlOl,用戶向離線下載服務(wù)器提交下載任務(wù)。
在本發(fā)明的一個(gè)實(shí)施例中,還包括步驟:離線下載服務(wù)器將下載任務(wù)放入多任務(wù)隊(duì)列并按照預(yù)定時(shí)間間隔分配執(zhí)行多任務(wù)隊(duì)列中的任務(wù)。
具體地,用戶例如可以通過(guò)客戶端或者客戶端應(yīng)用程序等將下載任務(wù)的URL地址提交到離線下載服務(wù)器,離線下載服務(wù)器接收用戶發(fā)送的下載任務(wù)的URL地址后,將該URL地址加入到多任務(wù)隊(duì)列,然后離線下載服務(wù)器中的任務(wù)分發(fā)機(jī)按照預(yù)定時(shí)間間隔(例如6秒鐘)將多任務(wù)隊(duì)列中的下載任務(wù)分配至任務(wù)工作機(jī)。
其中,某些資源服務(wù)器會(huì)設(shè)置一些策略防盜鏈,離線下載服務(wù)器發(fā)送請(qǐng)求至資源服務(wù)器時(shí),需要指定一些資源的頭信息header中的-ua、-refer,其中,_ua (user agent,用戶代理)它是一個(gè)特殊字符串頭,使得離線服務(wù)器能夠識(shí)別客戶使用的操作系統(tǒng)及版本、CPU類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語(yǔ)言、瀏覽器插件等prefer,用來(lái)標(biāo)識(shí)當(dāng)前網(wǎng)頁(yè)是從哪個(gè)網(wǎng)頁(yè)跳轉(zhuǎn)過(guò)來(lái)的一個(gè)鏈接地址,然后接收返回的狀態(tài)碼statuscode信息,并根據(jù)statuscode信息判斷跳轉(zhuǎn)還是statusOK。如果離線下載服務(wù)器判斷是跳轉(zhuǎn),則離線下載服務(wù)器將跳轉(zhuǎn)后的真實(shí)URL地址加入到多任務(wù)隊(duì)列。
S102,離線下載服務(wù)器判斷下載任務(wù)是否是已經(jīng)下載過(guò)的任務(wù)。
S103,如果否,則根據(jù)下載任務(wù)判斷下載方式。
例如,下載方式可以包括分塊下載、不分塊大文件下載和不分塊小文件下載等。
S104,根據(jù)下載方式將與下載任務(wù)對(duì)應(yīng)的資源下載到離線下載服務(wù)器。
在本發(fā)明的一個(gè)實(shí)施例中,離線下載服務(wù)器記錄與下載任務(wù)對(duì)應(yīng)的資源地址。具體地,離線下載服務(wù)器將下載任務(wù)對(duì)應(yīng)的資源地址,即下載任務(wù)對(duì)應(yīng)的資源的URL地址記錄在離線下載服務(wù)器中,例如可以記錄到離線下載服務(wù)器的資源庫(kù)中,由此可以在其它用戶向離線下載服務(wù)器提交相同的下載任務(wù)時(shí),離線下載服務(wù)器可以根據(jù)資源地址查找到下載任務(wù)對(duì)應(yīng)的資源,由此,避免了離線下載服務(wù)器從資源服務(wù)器重復(fù)下載相同的資源,節(jié)省了離線下載服務(wù)器的流量和帶寬。
S105,將資源拷貝到用戶的空間。
具體地,離線下載服務(wù)器可以將下載的資源拷貝到用戶的空間中,例如網(wǎng)盤等,當(dāng)用戶需要使用該資源時(shí),可以根據(jù)用戶的請(qǐng)求從空間中下載到例如用戶的個(gè)人電腦、或者移動(dòng)終端上。
在本發(fā)明的而 一個(gè)實(shí)施例中,用戶還可以通過(guò)發(fā)布渠道分享下載的資源,例如論壇、博客等。
根據(jù)本發(fā)明實(shí)施例的離線下載方法,一方面通過(guò)離線下載服務(wù)器根據(jù)用戶提交的下載任務(wù)下載對(duì)應(yīng)的資源,免去了用戶下載資源時(shí)需要掛機(jī)的煩惱,提升了用戶體驗(yàn),另一方面通過(guò)離線下載服務(wù)器將該資源在用戶需要時(shí)拷貝到用戶的空間中,提升了用戶下載資源的速度。
圖2是根據(jù)本發(fā)明一個(gè)具體實(shí)施例的離線下載方法的流程圖。
如圖2所示,離線下載方法包括:
S201,用戶向離線下載服務(wù)器提交下載任務(wù)。
在本發(fā)明的一個(gè)實(shí)施例中,還包括步驟:離線下載服務(wù)器將下載任務(wù)放入多任務(wù)隊(duì)列并按照預(yù)定時(shí)間間隔分配執(zhí)行多任務(wù)隊(duì)列中的任務(wù)。
具體地,用戶例如可以通過(guò)客戶端或者客戶端應(yīng)用程序等將下載任務(wù)的URL地址提交到離線下載服務(wù)器,離線下載服務(wù)器接收用戶發(fā)送的下載任務(wù)的URL地址后,將該URL地址加入到多任務(wù)隊(duì)列,然后離線下載服務(wù)器中的任務(wù)分發(fā)機(jī)按照預(yù)定時(shí)間間隔(例如6秒鐘)將多任務(wù)隊(duì)列中的下載任務(wù)分配至任務(wù)工作機(jī)。
其中,某些資源服務(wù)器會(huì)設(shè)置一些策略防盜鏈,離線下載服務(wù)器發(fā)送請(qǐng)求至資源服務(wù)器時(shí),需要指定一些資源的頭信息header中的_ua、-refer,然后接收返回的狀態(tài)碼statuscode信息,并根據(jù)statuscode信息判斷跳轉(zhuǎn)還是statusOK。如果離線下載服務(wù)器判斷是跳轉(zhuǎn),則離線下載服務(wù)器將跳轉(zhuǎn)后的真實(shí)URL地址加入到多任務(wù)隊(duì)列。
S202,離線下載服務(wù)器判斷下載任務(wù)是否是已經(jīng)下載過(guò)的任務(wù)。
S203,如果下載任務(wù)是未下載過(guò)的任務(wù),則根據(jù)下載任務(wù)判斷下載方式。
例如,下載方式可以包括分塊下載、不分塊大文件下載和不分塊小文件下載等。
S204,根據(jù)下載方式將與下載任務(wù)對(duì)應(yīng)的資源下載到離線下載服務(wù)器。
在本發(fā)明的一個(gè)實(shí)施例中,離線下載服務(wù)器記錄與下載任務(wù)對(duì)應(yīng)的資源地址。具體地,離線下載服務(wù)器將下載任務(wù)對(duì)應(yīng)的資源地址,即下載任務(wù)對(duì)應(yīng)的資源的URL地址記錄在離線下載服務(wù)器中,例如可以記錄到離線下載服務(wù)器的資源庫(kù)中,由此可以在其它用戶向離線下載服務(wù)器提交相同的下載任務(wù)時(shí),離線下載服務(wù)器可以根據(jù)資源地址查找到下載任務(wù)對(duì)應(yīng)的資源,由此,避免了離線下載服務(wù)器從資源服務(wù)器重復(fù)下載相同的資源,節(jié)省了離線下載服務(wù)器的流量和帶寬。
S205,將資源拷貝到用戶的空間。
具體地,離線下載服務(wù)器可以將下載的資源拷貝到用戶的空間中,例如網(wǎng)盤等,當(dāng)用戶需要使用該資源時(shí),可·以根據(jù)用戶的請(qǐng)求從空間中下載到例如用戶的個(gè)人電腦、或者移動(dòng)終端上。
在本發(fā)明的而一個(gè)實(shí)施例中,用戶可以通過(guò)發(fā)布渠道分享下載的資源,例如論壇、博客等。
S206,如果下載任務(wù)是已經(jīng)下載過(guò)的任務(wù),則根據(jù)與下載任務(wù)對(duì)應(yīng)的資源地址將與下載任務(wù)對(duì)應(yīng)的資源拷貝到用戶的空間。
具體地,如果離線下載服務(wù)器下載過(guò)該下載任務(wù)對(duì)應(yīng)的資源,則離線下載服務(wù)器根據(jù)資源地址查找到已經(jīng)下載過(guò)的資源,并將資源拷貝到用戶的空間上。
根據(jù)本發(fā)明實(shí)施例的離線下載方法,當(dāng)離線下載服務(wù)器判斷下載任務(wù)是已經(jīng)下載過(guò)的任務(wù)時(shí),根據(jù)與下載任務(wù)對(duì)應(yīng)的資源地址將與下載任務(wù)對(duì)應(yīng)的資源拷貝到用戶的空間,避免了離線下載服務(wù)器從資源服務(wù)器重復(fù)下載相同的資源,節(jié)省了離線下載服務(wù)器的流量和帶寬。
圖3是根據(jù)本發(fā)明另一個(gè)具體實(shí)施例的離線下載方法的流程圖。
離線下載服務(wù)器判斷下載任務(wù)是未下載過(guò)的任務(wù)后,為下載任務(wù)選擇適合的下載方式,以使離線下載服務(wù)器根據(jù)適合的下載方式完成下載該下載任務(wù)對(duì)應(yīng)的資源,具體的過(guò)程如圖3所示的本發(fā)明提出的一個(gè)具體實(shí)施例,離線下載方法包括:
S301,用戶向離線下載服務(wù)器提交下載任務(wù)。
在本發(fā)明的一個(gè)實(shí)施例中,還包括步驟:離線下載服務(wù)器將下載任務(wù)放入多任務(wù)隊(duì)列并按照預(yù)定時(shí)間間隔分配執(zhí)行多任務(wù)隊(duì)列中的任務(wù)。
具體地,用戶例如可以通過(guò)客戶端或者客戶端應(yīng)用程序等將下載任務(wù)的URL地址提交到離線下載服務(wù)器,離線下載服務(wù)器接收用戶發(fā)送的下載任務(wù)的URL地址后,將該URL地址加入到多任務(wù)隊(duì)列,然后離線下載服務(wù)器中的任務(wù)分發(fā)機(jī)按照預(yù)定時(shí)間間隔(例如6秒鐘)將多任務(wù)隊(duì)列中的下載任務(wù)分配至任務(wù)工作機(jī)。
其中,某些資源服務(wù)器會(huì)設(shè)置一些策略防盜鏈,離線下載服務(wù)器發(fā)送請(qǐng)求至資源服務(wù)器時(shí),需要指定一些資源的頭信息header中的_ua、-refer,然后接收返回的狀態(tài)碼statuscode信息,并根據(jù)statuscode信息判斷跳轉(zhuǎn)還是statusOK。如果離線下載服務(wù)器判斷是跳轉(zhuǎn),則離線下載服務(wù)器將跳轉(zhuǎn)后的真實(shí)URL地址加入到多任務(wù)隊(duì)列。
S302,離線下載服務(wù)器判斷下載任務(wù)是否是已經(jīng)下載過(guò)的任務(wù)。
S303,如果下載任務(wù)是未下載過(guò)的任務(wù),則離線下載服務(wù)器發(fā)送http請(qǐng)求至資源服務(wù)器。
S304,離線下載服務(wù)器根據(jù)資源服務(wù)器的對(duì)http請(qǐng)求的返回值判斷與下載任務(wù)對(duì)應(yīng)的資源是否支持?jǐn)帱c(diǎn)續(xù)傳并選擇分塊下載、不分塊大文件下載和不分塊小文件下載中的一種下載方式。
具體地,離線下載服務(wù)器可以根據(jù)返回值accep-range,其中accept-range是http協(xié)議的一個(gè)字段名稱,用來(lái)標(biāo)識(shí)本次請(qǐng)求是分片請(qǐng)求,并不是默認(rèn)情況下請(qǐng)求文件的最開始部分,判斷下載任務(wù)對(duì)應(yīng)的資源是否支持?jǐn)帱c(diǎn)續(xù)傳,并根據(jù)返回值accep-range為下載任務(wù)選擇分塊下載、不分塊大文件下載和不分塊小文件下載中的一種下載方式。
更具體地,如果離線下載服務(wù)器根據(jù)返回值acc印-range判斷下載任務(wù)對(duì)應(yīng)的資源可以分塊下載,則離線下載服務(wù)器為下載任務(wù)選擇分塊下載方式;如果離線下載服務(wù)器根據(jù)返回值accep-range判斷下載任務(wù)對(duì)應(yīng)的資源不可以分塊下載并且資源大小大于預(yù)設(shè)大小(例如8兆)或者大小未知, 則離線下載服務(wù)器為下載任務(wù)選擇不分塊大文件下載方式;如果離線下載服務(wù)器根據(jù)返回值accep-range判斷下載任務(wù)對(duì)應(yīng)的資源不可以分塊下載并且 資源大小小于預(yù)設(shè)大小(例如8兆),則離線下載服務(wù)器為下載任務(wù)選擇不分塊小文件下載方式。
S305,根據(jù)下載方式將與下載任務(wù)對(duì)應(yīng)的資源下載到離線下載服務(wù)器。
在本發(fā)明的一個(gè)實(shí)施例中,離線下載服務(wù)器記錄與下載任務(wù)對(duì)應(yīng)的資源地址。具體地,離線下載服務(wù)器將下載任務(wù)對(duì)應(yīng)的資源地址,即下載任務(wù)對(duì)應(yīng)的資源的URL地址記錄在離線下載服務(wù)器中,例如可以記錄到離線下載服務(wù)器的資源庫(kù)中,由此可以在其它用戶向離線下載服務(wù)器提交相同的下載任務(wù)時(shí),離線下載服務(wù)器可以根據(jù)資源地址查找到下載任務(wù)對(duì)應(yīng)的資源,避免了離線下載服務(wù)器從資源服務(wù)器重復(fù)下載相同的資源,節(jié)省了離線下載服務(wù)器的流量和帶寬。
S306,將資源拷貝到用戶的空間。
具體地,離線下載服務(wù)器可以將下載的資源拷貝到用戶的空間中,例如網(wǎng)盤等,當(dāng)用戶需要使用該資源時(shí),可以根據(jù)用戶的請(qǐng)求從空間中下載到例如用戶的個(gè)人電腦、或者移動(dòng)終端上。
在本發(fā)明的而一個(gè)實(shí)施例中,用戶可以通過(guò)發(fā)布渠道分享下載的資源,例如論壇、博客等。
S307,如果下載任務(wù)是已經(jīng)下載過(guò)的任務(wù),則根據(jù)與下載任務(wù)對(duì)應(yīng)的資源地址將與下載任務(wù)對(duì)應(yīng)的資源拷貝到用戶的空間。
具體地,如果離線下載服務(wù)器下載過(guò)該下載任務(wù)對(duì)應(yīng)的資源,離線下載服務(wù)器根據(jù)資源地址查找到已經(jīng)下載過(guò)的資源,并將資源拷貝到用戶的空間上。
根據(jù)本發(fā)明實(shí)施例的離線下載方法,離線下載服務(wù)器為下載任務(wù)對(duì)應(yīng)的資源選擇適合的下載方式,進(jìn)一步提高了下載的效率。
離線下載服務(wù)器根據(jù)不同的資源類型可以為下載任務(wù)對(duì)應(yīng)的資源選擇分塊下載、不分塊大文件下載和不分塊小文件下載中的一種下載方式,下面結(jié)合圖4、圖5和圖6分別詳細(xì)說(shuō)明采用三種不同的下載方式進(jìn)行下載的具體過(guò)程。
圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的根據(jù)分塊下載方式進(jìn)行下載的流程圖。
在本發(fā)明的一個(gè)實(shí)施例中,離線下載服務(wù)器根據(jù)資源服務(wù)器的對(duì)http請(qǐng)求的返回值為下載任務(wù)對(duì)應(yīng)的資源選擇分塊下載,包括以下步驟:
S41,當(dāng)下載方式是分塊下載時(shí),離線下載服務(wù)器根據(jù)下載任務(wù)得到需要下載的分塊。
具體地,離線下載服務(wù)器可以將下載任務(wù)對(duì)應(yīng)的資源根據(jù)資源數(shù)據(jù)的大小分為多個(gè)分塊,例如每4兆的資源數(shù)據(jù)為一個(gè)分塊。
S42,離線下載服務(wù)器下載需要下載的分塊中的第n個(gè)分塊。
具體地,離線下載服務(wù)器從資源服務(wù)器按照順序下載其中一個(gè)分塊,并將該分塊保存到離線下載服務(wù)器的內(nèi)存中。
S43,離線下載服務(wù)器判斷下載第n個(gè)分塊是否成功。
S44,如果下載第n個(gè)分塊是成功,則離線下載服務(wù)器將第n個(gè)分塊上傳到云存儲(chǔ)。
其中,如果下載第n個(gè)分塊未成功,則離線下載服務(wù)器結(jié)束下載。
S45,離線下載服務(wù)器判斷上傳是否成功。
S46,如果上傳成功,則離線下載服務(wù)器判斷是否上傳了需要下載的分塊中的所有分塊。
其中,如果上傳不成功,則離線下載服務(wù)器結(jié)束下載。
S47,如果未上 傳需要下載的分塊中的所有分塊,則令n=n+l,其中n是大于或等于I的自然數(shù)。由此,離線下載服務(wù)器繼續(xù)下載分塊中的新分塊直至所有的分塊都下載完成。
圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的根據(jù)不分塊大文件下載方式進(jìn)行下載的流程圖。
在本發(fā)明的一個(gè)實(shí)施例中,離線下載服務(wù)器根據(jù)資源服務(wù)器的對(duì)http請(qǐng)求的返回值為下載任務(wù)對(duì)應(yīng)的資源選擇不分塊大文件下載包括以下步驟:
S51,當(dāng)下載方式是不分塊大文件下載時(shí),離線下載服務(wù)器在離線下載服務(wù)器中創(chuàng)建臨時(shí)文件并開始下載文件。
具體地,離線下載服務(wù)器建立和資源服務(wù)器的連接,然后創(chuàng)建下載任務(wù)對(duì)應(yīng)的資源的臨時(shí)文件并下載該文件。
S52,離線下載服務(wù)器判斷文件的下載是否成功。
S53,如果文件下載成功,則離線下載服務(wù)器將文件分為預(yù)定大小的塊并按照順序?qū)㈩A(yù)定大小的塊上傳到云存儲(chǔ)。
具體地,如果文件下載成功,則離線下載服務(wù)器將該文件根據(jù)文件數(shù)據(jù)的大小分為多個(gè)分塊,例如每4兆的文件數(shù)據(jù)作為一個(gè)分塊,然后離線下載服務(wù)器將每個(gè)分塊的資源數(shù)據(jù)按照順序上傳至云存儲(chǔ)空間中。
其中,如果文件下載未成功,則離線下載服務(wù)器結(jié)束下載。
S54,離線下載服務(wù)器判斷上傳是否成功。
S55,如果上傳成功,則離線下載服務(wù)器刪除臨時(shí)文件,并確定下載完成。
其中,如果上傳未成功,則離線下載服務(wù)器結(jié)束下載。
圖6是根據(jù)本發(fā)明一個(gè)實(shí)施例的根據(jù)不分塊小文件下載方式進(jìn)行下載的流程圖。
在本發(fā)明的一個(gè)實(shí)施例中,離線下載服務(wù)器根據(jù)資源服務(wù)器的對(duì)http請(qǐng)求的返回值為下載任務(wù)對(duì)應(yīng)的資源選擇不分塊小文件下載包括以下步驟:
S61,當(dāng)下載方式是不分塊小文件下載時(shí),則離線下載服務(wù)器開始下載文件。
具體地,離線下載服務(wù)器建立和資源服務(wù)器的連接,然后下載文件。
S62,離線下載服務(wù)器判斷文件的下載是否成功。
S63,如果下載成功,則離線下載服務(wù)器將文件分為預(yù)定大小的塊并按照順序?qū)㈩A(yù)定大小的塊上傳到云存儲(chǔ)。
具體地,如果文件下載成功,則離線下載服務(wù)器將該文件根據(jù)文件數(shù)據(jù)的大小分為多個(gè)分塊,例如每4兆的文件數(shù)據(jù)作為一個(gè)分塊,離線下載服務(wù)器將每個(gè)分塊的文件數(shù)據(jù)按照順序上傳至云存儲(chǔ)空間中。
其中,如果文件下載未成功,則離線下載服務(wù)器結(jié)束下載。
S64,離線下載服務(wù)器判斷上傳是否成功。
S65,如果上傳成功,則離線下載服務(wù)器確定下載完成。
其中,如果上傳未成功,則離線下載服務(wù)器結(jié)束下載。
如果離線下載服務(wù)器按照上述三種下載方式從資源服務(wù)器下載文件未成功或者下載出現(xiàn)斷點(diǎn)(如部分分塊不能成功下載),則離線下載服務(wù)器還可以利用斷點(diǎn)續(xù)傳的下載方式對(duì)下載失敗進(jìn)行補(bǔ)救,離線下載服務(wù)器建立數(shù)據(jù)文件和數(shù)據(jù)文件的下載信息文件并以XX.St命名,應(yīng)當(dāng)理解還可以以其他形式命名,其中,離線下載服務(wù)器可以將已下載的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)文件中,并將文件信息(例如文件的md5值、存儲(chǔ)路徑等)保存在下載信息文件中。然后離線下載服務(wù)器嘗試和資源服務(wù)器重新建立連接,以使離線下載服務(wù)器可以以斷點(diǎn)續(xù)傳的方式下載未完成下 載的文件。下面詳細(xì)說(shuō)明一下離線下載服務(wù)器從資源服務(wù)器以斷點(diǎn)續(xù)傳的方式下載資源的過(guò)程。
圖7是根據(jù)本發(fā)明一個(gè)實(shí)施例的離線下載服務(wù)器從資源服務(wù)器以斷點(diǎn)續(xù)傳的方式下載資源的過(guò)程的流程圖。
如圖7所示,首先,離線下載服務(wù)器可以以斷點(diǎn)續(xù)傳的方式繼續(xù)下載未完成下載的文件(S71),當(dāng)離線下載服務(wù)器以斷點(diǎn)續(xù)傳的方式下載文件完成后,判斷文件以斷點(diǎn)續(xù)傳的方式下載是否成功(S72)。
如果離線下載服務(wù)器判斷文件以斷點(diǎn)續(xù)傳的方式下載成功,則離線下載服務(wù)器判斷該文件是否為重新下載的文件(S73)。如果離線下載服務(wù)器判斷是重新下載的文件,則離線下載服務(wù)器將下載的文件分塊的md5 (Message-Digest Algorithm,信息摘要值)值、文件名、存儲(chǔ)路徑等文件信息上傳至云存儲(chǔ)空間中,并創(chuàng)建新文件記錄(S74),然后更新資源表中的S3Md5 (為計(jì)算得出的一種32位長(zhǎng)度的唯一標(biāo)識(shí))字段(S75)。如果離線下載服務(wù)器判斷不是重新下載的文件,則離線下載服務(wù)器將已保存過(guò)的文件的md5值、文件名、存儲(chǔ)路徑等上傳至云存儲(chǔ)空間中,并創(chuàng)建新文件記錄(S76)。然后離線下載服務(wù)器從下載任務(wù)表中移除該下載任務(wù)(S77),并更新下載文件表中的offset字段,該字段用于標(biāo)識(shí)當(dāng)前分片的開始位置(S78)。
如果離線下載服務(wù)器判斷以斷點(diǎn)續(xù)傳的方式文件下載未成功,則離線下載服務(wù)器判斷是否達(dá)到最大下載重試次數(shù)(S79),如果離線下載服務(wù)器判斷下載次數(shù)達(dá)到最大下載次數(shù),則離線下載服務(wù)器判斷以斷點(diǎn)續(xù)傳的方式下載文件是否成功(S710)。如果離線下載服務(wù)器判斷以斷點(diǎn)續(xù)傳的方式下載文件成功,則離線下載服務(wù)器將已上傳過(guò)的文件md5值、文件名、存儲(chǔ)路徑等上傳至云存儲(chǔ)空間中,并創(chuàng)建新文件記錄(S76),如果離線下載服務(wù)器判斷以斷點(diǎn)續(xù)傳的方式下載文件未成功,則離線下載服務(wù)器從下載任務(wù)表中移除下載任務(wù)(S711),然后在下載失敗任務(wù)表中插入失敗任務(wù)(S712)。
如果離線下載服務(wù)器判斷未達(dá)到最大下載重試次數(shù),則離線下載服務(wù)器更新下載任務(wù)表中的重試次數(shù),將重試次數(shù)加一,并在extra (用于記錄已經(jīng)下載完成的部分文件的md5信息)里添加已完成的range的md5列表(S713),其中,如果下載任務(wù)對(duì)應(yīng)的文件不可分塊,則extra值為空,然后離線下載服務(wù)器更新下載任務(wù)表中的offset字段(S714)。離線下載服務(wù)器在判斷文件以斷點(diǎn)續(xù)傳的方式下載是否成功之后,可以從內(nèi)存任務(wù)列表中移除該下載任務(wù)(S715)。
為了實(shí)現(xiàn)上述實(shí)施例,本發(fā)明還提出一種離線下載服務(wù)器。
一種離線下載服務(wù)器,包括:接收模塊,用于接收用戶提交的下載任務(wù);第一判斷模塊,用于判斷下載任務(wù)是否是已經(jīng)下載過(guò)的任務(wù);第二判斷模塊,用于當(dāng)下載任務(wù)不是已經(jīng)下載過(guò)的任務(wù)時(shí),根據(jù)下載任務(wù)判斷下載方式;下載模塊,用于根據(jù)下載方式將與下載任務(wù)對(duì)應(yīng)的資源下載到離線下載服務(wù)器;以及拷貝模塊,用于將資源拷貝到用戶的空間。
圖8是根據(jù)本發(fā)明一個(gè)實(shí)施例的離線下載服務(wù)器的結(jié)構(gòu)示意圖。
如圖8所示,離線下載服務(wù)器包括:接收模塊110、第一判斷模塊120、第二判斷模塊130、下載模塊140和拷貝模塊150。
具體地,接收模塊110用于接收用戶提交的下載任務(wù)。更具體地,用戶例如可以通過(guò)客戶端或者客戶端應(yīng)用程序等將下載任務(wù)的URL地址提交到接收模塊110。
第一判斷模塊120用 于判斷接收模塊110接收的下載任務(wù)是否是已經(jīng)下載過(guò)的任務(wù)。
第二判斷模塊130用于當(dāng)?shù)谝慌袛嗄K120判斷下載任務(wù)不是已經(jīng)下載過(guò)的任務(wù)時(shí),根據(jù)下載任務(wù)判斷下載方式。例如,下載方式可以包括分塊下載、不分塊大文件下載和不分塊小文件下載等。
下載模塊140用于根據(jù)第二判斷模塊130判斷的下載方式將與下載任務(wù)對(duì)應(yīng)的資源下載到離線下載服務(wù)器。
拷貝模塊150用于將下載模塊140下載的資源拷貝到用戶的空間。具體地,拷貝模塊150可以將下載的資源拷貝到用戶的空間中,例如網(wǎng)盤等,當(dāng)用戶需要使用該資源時(shí),可以根據(jù)用戶的請(qǐng)求從空間中下載到例如用戶的個(gè)人電腦、或者移動(dòng)終端上。
在本發(fā)明的而一個(gè)實(shí)施例中,用戶還可以通過(guò)發(fā)布渠道分享下載的資源,例如論壇、博客等。
根據(jù)本發(fā)明實(shí)施例的離線下載服務(wù)器,一方面根據(jù)用戶提交的下載任務(wù)下載對(duì)應(yīng)的資源,免去了用戶下載資源時(shí)需要掛機(jī)的煩惱,提升了用戶體驗(yàn),另一方面將該資源在用戶需要時(shí)拷貝到用戶的空間中,提升了用戶下載資源的速度。
圖9是根據(jù)本發(fā)明一個(gè)具體實(shí)施例的離線下載服務(wù)器的結(jié)構(gòu)示意圖。
如圖9所示,離線下載服務(wù)器包括:接收模塊110、第一判斷模塊120、第二判斷模塊130、下載模塊140和拷貝模塊150、添加模塊160、分配執(zhí)行模塊170和記錄模塊180。
具體地,添加模塊160用于將接收模塊110接收下載任務(wù)放入多任務(wù)隊(duì)列。更具體地,接收模塊110接收用戶發(fā)送的下載任務(wù)的URL地址后,添加模塊160將該URL地址加入到多任務(wù)隊(duì)列,其中,某些資源服務(wù)器會(huì)設(shè)置一些策略防盜鏈,離線下載服務(wù)器發(fā)送請(qǐng)求至資源服務(wù)器時(shí),需要指定一些資源的頭信息header中的-ua、-refer,然后接收返回的狀態(tài)碼statuscode信息,并根據(jù)statuscode信息判斷跳轉(zhuǎn)還是statusOK。如果離線下載服務(wù)器判斷是跳轉(zhuǎn),則添加模塊160將跳轉(zhuǎn)后的真實(shí)URL地址加入到多任務(wù)隊(duì)列。
分配執(zhí)行模塊170用于按照預(yù)定時(shí)間間隔分配執(zhí)行多任務(wù)隊(duì)列中的任務(wù)。更具體地,分配執(zhí)行模塊170中的任務(wù)分發(fā)機(jī)按照預(yù)定時(shí)間間隔(例如6秒鐘)將多任務(wù)隊(duì)列中的下載任務(wù)分配至任務(wù)工作機(jī)。
記錄模塊180用于記錄與下載任務(wù)對(duì)應(yīng)的資源地址。更具體地,下載模塊140下載資源后,記錄模塊180將下載任務(wù)對(duì)應(yīng)的資源地址,即下載任務(wù)對(duì)應(yīng)的資源的URL地址記錄在離線下載服務(wù)器中,例如 可以記錄到離線下載服務(wù)器的資源庫(kù)中,由此可以在其它用戶向離線下載服務(wù)器提交相同的下載任務(wù)時(shí),離線下載服務(wù)器可以根據(jù)資源地址查找到下載任務(wù)對(duì)應(yīng)的資源。
根據(jù)本發(fā)明實(shí)施例的離線下載服務(wù)器,避免了離線下載服務(wù)器從資源服務(wù)器重復(fù)下載相同的資源,節(jié)省了離線下載服務(wù)器的流量和帶寬。
在本發(fā)明的一個(gè)實(shí)施例中,拷貝模塊150還用于在第一判斷模塊120判斷下載任務(wù)是已經(jīng)下載過(guò)的任務(wù)時(shí),根據(jù)與下載任務(wù)對(duì)應(yīng)的資源地址將與下載任務(wù)對(duì)應(yīng)的資源拷貝到用戶的空間。具體地,如果第一判斷模塊120判斷離線下載服務(wù)器下載過(guò)該下載任務(wù)對(duì)應(yīng)的資源,則拷貝模塊150根據(jù)資源地址查找到已經(jīng)下載過(guò)的資源,并將資源拷貝到用戶的空間上。根據(jù)本發(fā)明實(shí)施例的離線下載服務(wù)器,由此,避免了離線下載服務(wù)器從資源服務(wù)器重復(fù)下載相同的資源,節(jié)省了離線下載服務(wù)器的流量和帶寬。
圖10是根據(jù)本發(fā)明另一個(gè)具體實(shí)施例的離線下載服務(wù)器的結(jié)構(gòu)示意圖。
如圖10所示,離線下載服務(wù)器包括:接收模塊110、第一判斷模塊120、第二判斷模塊130、下載模塊140、拷貝模塊150、添加模塊160、分配執(zhí)行模塊170和記錄模塊180、發(fā)送單元131和判斷單元132。其中,第二判斷模塊130包括:發(fā)送單元131和判斷單元132。
具體地,發(fā)送單元131用于當(dāng)?shù)谝慌袛嗄K120判斷下載任務(wù)不是已經(jīng)下載過(guò)的任務(wù)時(shí),發(fā)送http請(qǐng)求至資源服務(wù)器。
判斷單元132用于根據(jù)資源服務(wù)器的對(duì)發(fā)送單元131發(fā)送的http請(qǐng)求的返回值判斷與下載任務(wù)對(duì)應(yīng)的資源是否支持?jǐn)帱c(diǎn)續(xù)傳并選擇分塊下載、不分塊大文件下載和不分塊小文件下載中的一種下載方式。具體地,判斷單元132可以根據(jù)返回值accep-range判斷下載任務(wù)對(duì)應(yīng)的資源是否支持?jǐn)帱c(diǎn)續(xù)傳,并根據(jù)返回值accep-range為下載任務(wù)選擇分塊下載、不分塊大文件下載和不分塊小文件下載中的一種下載方式。
更具體地,如果判斷單元132根據(jù)返回值accep-range判斷下載任務(wù)對(duì)應(yīng)的資源可以分塊下載,則判斷單元132為下載任務(wù)選擇分塊下載方式;如果判斷單元132根據(jù)返回值accep-range判斷下載任務(wù)對(duì)應(yīng)的資源不可以分塊下載并且資源大小大于預(yù)設(shè)大小(例如8兆)或者大小未知,則判斷單元132為下載任務(wù)選擇不分塊大文件下載方式;如果判斷單元132根據(jù)返回值accep-range判斷下載任務(wù)對(duì)應(yīng)的資源不可以分塊下載并且資源大小小于預(yù)設(shè)大小(例如8兆),則判斷單元132為下載任務(wù)選擇不分塊小文件下載方式。
根據(jù)本發(fā)明實(shí)施例的離線下載服務(wù)器,為下載任務(wù)對(duì)應(yīng)的資源選擇適合的下載方式,進(jìn)一步提聞了下載的效率。
在本發(fā)明的一個(gè)實(shí)施例中,下載模塊140還用于當(dāng)?shù)诙袛嗄K130判斷下載方式是分塊下載時(shí),根據(jù)下載任務(wù)得到需要下載的分塊,并下載需要下載的分塊中的第n個(gè)分塊,以及判斷下載第n個(gè)分塊是否成功,并在判斷下載第n個(gè)分塊成功時(shí),將第n個(gè)分塊上傳到云存儲(chǔ),以及判斷上傳是否成功,并在判斷第n個(gè)分塊上傳成功時(shí),判斷是否上傳了需要下載的分塊中的所有分塊,以及在判斷未上傳需要下載的分塊中的所有分塊時(shí),令n=n+l,其中n是大于或等于I的自然數(shù)。具體地,下載模塊140可以將下載任務(wù)對(duì)應(yīng)的資源根據(jù)資源數(shù)據(jù)的大小分為多個(gè)分塊,例如每4兆的資源數(shù)據(jù)為一個(gè)分塊,然后下載模塊140從資源服務(wù)器按照順序下載其中一個(gè)分塊,并將該分塊保存到離線下載服務(wù)器的內(nèi)存中,然后下載模塊140判斷下載第n個(gè)分塊是否成功,如果下載成功,則下載模塊140將第n個(gè)分塊上傳到云存儲(chǔ),如果下載未成功,則下載模塊140結(jié)束下載。然后下載模塊140判斷上傳是否成功,如果上傳成功,則下載模塊140判斷是否上傳了需要下載的分塊中的所有分塊,如果上傳未成功,則下載模塊140結(jié)束下載,然后如果下載模塊140判斷未上傳需要下載的分塊中的所有分塊,則令n=n+l,由此,下載模塊140繼續(xù)下載分塊中的新分塊直至所有的分塊都下載完成。
在本發(fā)明的一個(gè)實(shí)施例中,下載模塊140還用于當(dāng)?shù)诙袛嗄K130判斷下載方式是不分塊大文件下載時(shí),在離線下載服務(wù)器創(chuàng)建臨時(shí)文件并開始下載文件,并判斷文件的下載是否成功,以及在判斷文件的下載成功時(shí),將文件分為預(yù)定大小的塊并按照順序?qū)㈩A(yù)定大小的塊上傳到云存儲(chǔ),并判斷上傳是否成功,以及在判斷上傳成功時(shí),刪除臨時(shí)文件。具體地,下載模塊140建立和資源服務(wù)器的連接,然后創(chuàng)建下載任務(wù)對(duì)應(yīng)的資源的臨時(shí)文件并下載該文件,然后判斷下載是否成功,如果下載成功,則下載模塊140將該文件根據(jù)文件數(shù)據(jù)的大小分為多個(gè)分塊,例如每4兆的文件數(shù)據(jù)作為一個(gè)分塊,然后下載模塊140將每個(gè)分塊的資源數(shù)據(jù)按照順序上傳至云存儲(chǔ)空間中,如果下載未成功,則下載模塊140結(jié)束下載,然后下載模塊140判斷上傳是否成功,如果上傳成功,則下載模塊140刪除臨時(shí)文件,并確定下載完成,如果上傳未成功,則下載模塊140結(jié)束下載
在本發(fā)明的一個(gè)實(shí)施例中,下載模塊140還用于當(dāng)?shù)诙袛嗄K130判斷下載方式是不分塊小文件下載時(shí),開始下載文件,并判斷文件的下載是否成功,以及在文件下載成功時(shí),將文件分為預(yù)定大小的塊并按照順序?qū)㈩A(yù)定大小的塊上傳到云存儲(chǔ)。
在本發(fā)明的實(shí)施例中,終端可以是筆記本、臺(tái)式機(jī)、手機(jī)、PDA、上網(wǎng)本等各種終端。
應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來(lái)實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來(lái)實(shí)現(xiàn)。例如,如果用硬件 來(lái)實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來(lái)實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場(chǎng)可編程門陣列(FPGA)等。
在本說(shuō)明書的描述中,參考術(shù)語(yǔ)“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說(shuō)明書中,對(duì)上述術(shù)語(yǔ)的示意性表述不一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。
盡管已經(jīng)示出和描述了本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以理解在不脫離本發(fā)明的原理和精神的情況下可以對(duì)這些實(shí)施例進(jìn)行多種變化、修改、替換和變型,本發(fā)明的范圍由所 附權(quán)利要求及其等同限定。
權(quán)利要求
1.一種離線下載方法,其特征在于,包括以下步驟: 用戶向離線下載服務(wù)器提交下載任務(wù); 所述離線下載服務(wù)器判斷所述下載任務(wù)是否是已經(jīng)下載過(guò)的任務(wù); 如果否,則根據(jù)所述下載任務(wù)判斷下載方式; 根據(jù)所述下載方式將與所述下載任務(wù)對(duì)應(yīng)的資源下載到所述離線下載服務(wù)器;以及 將所述資源拷貝到所述用戶的空間。
2.根據(jù)權(quán)利要求1所述的離線下載方法,其特征在于,進(jìn)一步包括步驟: 所述離線下載服務(wù)器將所述下載任務(wù)放入多任務(wù)隊(duì)列并按照預(yù)定時(shí)間間隔分配執(zhí)行所述多任務(wù)隊(duì)列中的任務(wù)。
3.根據(jù)權(quán)利要求1所述的離線下載方法,其特征在于,進(jìn)一步包括步驟: 記錄與所述下載任務(wù)對(duì)應(yīng)的資源地址。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的離線下載方法,其特征在于,進(jìn)一步包括步驟: 如果所述下載任務(wù)是已經(jīng)下載過(guò)的任務(wù),則根據(jù)與所述下載任務(wù)對(duì)應(yīng)的資源地址將與所述下載任務(wù)對(duì)應(yīng)的資源拷貝到所述用戶的空間。
5.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的離線下載方法,其特征在于,根據(jù)所述下載任務(wù)判斷下載方式的步驟包括: 發(fā)送http請(qǐng)求至資源服務(wù)器; 根據(jù)所述資源服務(wù)器的對(duì)所述http請(qǐng)求的返回值判斷與所述下載任務(wù)對(duì)應(yīng)的資源是否支持?jǐn)帱c(diǎn)續(xù)傳并選擇分塊下載、不分塊大文件下載和不分塊小文件下載中的一種下載方式。
6.根據(jù)權(quán)利要求5所述的離線下載方法,其特征在于,根據(jù)所述下載方式將與所述下載任務(wù)對(duì)應(yīng)的資源下載到所述離線下載服務(wù)器包括: 當(dāng)所述下載方式是分塊下載時(shí),根據(jù)所述下載任務(wù)得到需要下載的分塊; 下載所述需要下載的分塊中的第n個(gè)分塊; 判斷下載所述第n個(gè)分塊是否成功; 如果是,則將所述第n個(gè)分塊上傳到云存儲(chǔ); 判斷所述上傳是否成功; 如果是,則判斷是否上傳了所述需要下載的分塊中的所有分塊;以及 如果否,則令n=n+l,其中n是大于或等于I的自然數(shù)。
7.根據(jù)權(quán)利要求5所述的離線下載方法,其特征在于,根據(jù)所述下載方式將與所述下載任務(wù)對(duì)應(yīng)的資源下載到所述離線下載服務(wù)器包括: 當(dāng)所述下載方式是不分塊大文件下載時(shí),在所述離線下載服務(wù)器創(chuàng)建臨時(shí)文件并開始下載文件; 判斷所述文件的下載是否成功; 如果是,則將所述文件分為預(yù)定大小的塊并按照順序?qū)⑺鲱A(yù)定大小的塊上傳到云存儲(chǔ); 判斷所述上傳是否成功;以及 如果是,則刪除所述臨時(shí)文件。
8.根據(jù)權(quán)利要求5所述的離線下載方法,其特征在于,根據(jù)所述下載方式將與所述下載任務(wù)對(duì)應(yīng)的資源下載到所述離線下載服務(wù)器包括: 當(dāng)所述下載方式是不分塊小文件下載時(shí),則開始下載文件; 判斷所述文件的下載是否成功;以及 如果是,則將所述文件分為預(yù)定大小的塊并按照順序?qū)⑺鲱A(yù)定大小的塊上傳到云存儲(chǔ)。
9.一種離線下載服務(wù)器,其特征在于,包括: 接收模塊,用于接收用戶提交的下載任務(wù); 第一判斷模塊,用于判斷所述下載任務(wù)是否是已經(jīng)下載過(guò)的任務(wù); 第二判斷模塊,用于根據(jù)所述第一判斷模塊判斷所述下載任務(wù)不是已經(jīng)下載過(guò)的任務(wù)時(shí),根據(jù)所述下載任務(wù)判斷下載方式; 下載模塊,用于根據(jù)所述下載方式將與所述下載任務(wù)對(duì)應(yīng)的資源下載到所述離線下載服務(wù)器;以及 拷貝模塊,用于將所述資源拷貝到所述用戶的空間。
10.根據(jù)權(quán)利要求9所述的離線下載服務(wù)器,其特征在于,還包括: 添加模塊,用于將所述下載任務(wù)放入多任務(wù)隊(duì)列;以及 分配執(zhí)行模塊,用于按照預(yù)定時(shí)間間隔分配執(zhí)行所述多任務(wù)隊(duì)列中的任務(wù)。
11.根據(jù)權(quán)利要求9所述的離線下載服務(wù)器,其特征在于,還包括: 記錄模塊,用于記錄與所述下載任務(wù)對(duì)應(yīng)的資源地址。
12.根據(jù)權(quán)利要求9至11中任一項(xiàng)所述的離線下載服務(wù)器,其特征在于,所述拷貝模塊還用于: 在所述下載任務(wù)是已經(jīng)下載過(guò)的任務(wù)時(shí),根據(jù)與所述下載任務(wù)對(duì)應(yīng)的資源地址將與所述下載任務(wù)對(duì)應(yīng)的資源拷貝到所述用戶的空間。
13.根據(jù)權(quán)利要求9至11中任一項(xiàng)所述的離線下載服務(wù)器,其特征在于,所述第二判斷模塊包括: 發(fā)送單元,用于發(fā)送http請(qǐng)求至資源服務(wù)器; 判斷單元,用于根據(jù)所述資源服務(wù)器的對(duì)所述http請(qǐng)求的返回值判斷與所述下載任務(wù)對(duì)應(yīng)的資源是否支持?jǐn)帱c(diǎn)續(xù)傳并選擇分塊下載、不分塊大文件下載和不分塊小文件下載中的一種下載方式。
14.根據(jù)權(quán)利要求13所述的離線下載服務(wù)器,其特征在于,所述下載模塊還用于:當(dāng)所述下載方式是分塊下載時(shí),根據(jù)所述下載任務(wù)得到需要下載的分塊,并下載所述需要下載的分塊中的第n個(gè)分塊,以及判斷下載所述第n個(gè)分塊是否成功,并在判斷下載所述第n個(gè)分塊成功時(shí),將所述第n個(gè)分塊上傳到云存儲(chǔ),以及判斷所述上傳是否成功,并在判斷所述第n個(gè)分塊上傳成功時(shí),判斷是否上傳了所述需要下載的分塊中的所有分塊,以及在判斷未上傳所述需要下載的分塊中的所有分塊時(shí),令n=n+l,其中n是大于或等于I的自然數(shù)。
15.根據(jù)權(quán)利要求13所述的離線下載服務(wù)器,其特征在于,所述下載模塊還用于: 當(dāng)所述下載方式是不分塊大文件下載時(shí),在所述離線下載服務(wù)器創(chuàng)建臨時(shí)文件并開始下載文件,并判斷所述文件的下載是否成功,以及在判斷所述文件的下載成功時(shí),將所述文件分為預(yù)定大小的塊并按照順序?qū)⑺鲱A(yù)定大小的塊上傳到云存儲(chǔ),并判斷所述上傳是否成功,以及在判斷所述上傳成功時(shí),刪除所述臨時(shí)文件。
16.根據(jù)權(quán)利要求14所述的離線下載服務(wù)器,其特征在于,所述下載模塊還用于:當(dāng)所述下載方式是不分塊小文件下載時(shí),開始下載文件,并判斷所述文件的下載是否成功,以及在所述文件下載成功時(shí),將所述文件分為預(yù)定大小的塊并按照順序?qū)⑺鲱A(yù)定大小的塊上傳到 云存儲(chǔ)。
全文摘要
本發(fā)明提出一種離線下載方法和離線下載服務(wù)器。其中該方法包括以下步驟用戶向離線下載服務(wù)器提交下載任務(wù);離線下載服務(wù)器判斷下載任務(wù)是否是已經(jīng)下載過(guò)的任務(wù);如果否,則根據(jù)下載任務(wù)判斷下載方式;根據(jù)下載方式將與下載任務(wù)對(duì)應(yīng)的資源下載到離線下載服務(wù)器;以及將資源拷貝到用戶的空間。根據(jù)本發(fā)明實(shí)施例的離線下載方法,一方面免去了用戶下載資源時(shí)需要掛機(jī)的煩惱,提升了用戶體驗(yàn),另一方面提升了用戶下載資源的速度。
文檔編號(hào)H04L29/08GK103227836SQ20131015895
公開日2013年7月31日 申請(qǐng)日期2013年5月2日 優(yōu)先權(quán)日2013年5月2日
發(fā)明者宋乃飛, 鄒磊, 王巍 申請(qǐng)人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司