文件傳輸方法、設(shè)備及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種文件傳輸方法、設(shè)備及系統(tǒng)。其中,文件傳輸方法包括:根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊,得到至少兩個(gè)塊文件;查詢文件上傳服務(wù)器中是否已存儲(chǔ)有本文件的部分塊文件;根據(jù)查詢結(jié)果選擇未存儲(chǔ)在文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳。采用本發(fā)明實(shí)施能夠節(jié)約網(wǎng)絡(luò)資源,節(jié)省客戶端上傳文件的時(shí)間,提高用戶體驗(yàn)。
【專利說(shuō)明】文件傳輸方法、設(shè)備及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)應(yīng)用領(lǐng)域,特別是涉及一種文件傳輸方法、設(shè)備及系統(tǒng)。
【背景技術(shù)】
[0002]目前對(duì)文件進(jìn)行傳輸主要是通過(guò)計(jì)算文件的哈希值(以下簡(jiǎn)稱hash值)比對(duì)。如果客戶端準(zhǔn)備進(jìn)行文件傳輸,先行將文件的hash值發(fā)送到服務(wù)端進(jìn)行查詢。如果發(fā)現(xiàn)該hash值在服務(wù)端已經(jīng)存在,則客戶端不用上傳該文件,服務(wù)器端已存儲(chǔ)有該文件,從而達(dá)到加速文件上傳或者秒傳的功能。圖1示出了根據(jù)【背景技術(shù)】的文件傳輸方法的處理流程圖。由于該文件傳輸方法通常能夠在秒級(jí)別內(nèi)完成文件上傳,因此,也被稱為文件秒傳方法。參見(jiàn)圖1,文件傳輸方法包括步驟S102至步驟SllO:
[0003]步驟S102、客戶端上傳文件hash值至文件上傳服務(wù)器;
[0004]步驟S104、文件上傳服務(wù)器將hash值發(fā)送至文件消重服務(wù)器,查詢?cè)撐募欠翊嬖冢?br>
[0005]步驟S106、文件消重服務(wù)器返回該hash值已存在;
[0006]步驟S108、文件上傳服務(wù)器將該文件與客戶端關(guān)聯(lián)添加;
[0007]步驟S110、文件上傳服務(wù)器通知客戶端文件上傳已完成。
[0008]參見(jiàn)圖1所示流程可知,上述文件傳輸方式所使用的文件秒傳是以文件粒度為級(jí)別的控制。對(duì)于這種方式,至少存在以下問(wèn)題:
[0009]當(dāng)一個(gè)文件在未上傳完成時(shí),如果客戶端斷開(kāi)導(dǎo)致文件終止上傳,那么,當(dāng)客戶端再次開(kāi)機(jī)后上傳時(shí),對(duì)于已經(jīng)上傳的部份,仍需要從頭開(kāi)始上傳。這極大的浪費(fèi)了用戶的網(wǎng)絡(luò)資源、服務(wù)器的帶寬資源,并大大增加了客戶端上傳文件的時(shí)間。
【發(fā)明內(nèi)容】
[0010]鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的文件傳輸方法、設(shè)備和相應(yīng)的文件傳輸系統(tǒng)。
[0011]依據(jù)本發(fā)明的一個(gè)方面,提供了一種文件傳輸方法,用于將文件從客戶端上傳至文件上傳服務(wù)器,該方法包括:根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊以得到至少兩個(gè)塊文件;查詢所述文件上傳服務(wù)器中是否已存儲(chǔ)有所述文件的部分塊文件;根據(jù)查詢結(jié)果選擇未存儲(chǔ)在所述文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳。
[0012]可選地,查詢所述文件上傳服務(wù)器中是否已存儲(chǔ)有所述文件的部分塊文件,包括:計(jì)算每個(gè)塊文件的hash值;將各hash值發(fā)送至文件消重服務(wù)器,其中,所述文件消重服務(wù)器對(duì)所述文件上傳服務(wù)器中存儲(chǔ)的塊文件進(jìn)行消重,存儲(chǔ)消重后的塊文件與hash值的映射關(guān)系;查詢所述文件消重服務(wù)器中是否存儲(chǔ)有該hash值,若有,則表明所述文件上傳服務(wù)器中已存儲(chǔ)有該hash值所對(duì)應(yīng)的塊文件。
[0013]可選地,所述映射關(guān)系為一對(duì)一的映射關(guān)系。
[0014]可選地,所述預(yù)設(shè)規(guī)則包括:將本文件分為相同塊長(zhǎng)的塊文件;或者將本文件分為不同塊長(zhǎng)的塊文件。
[0015]依據(jù)本發(fā)明的另一個(gè)方面,還提供了一種客戶端,用于把文件上傳至文件上傳服務(wù)器,其包括:分塊器,配置為根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊以得到至少兩個(gè)塊文件;查詢器,配置為查詢所述文件上傳服務(wù)器中是否已存儲(chǔ)有所述文件的部分塊文件;傳輸器,配置為根據(jù)查詢結(jié)果選擇未存儲(chǔ)在所述文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳。
[0016]可選地,所述查詢器還配置為:計(jì)算每個(gè)塊文件的hash值;將各hash值發(fā)送至文件消重服務(wù)器,其中,所述文件消重服務(wù)器對(duì)所述文件上傳服務(wù)器中存儲(chǔ)的塊文件進(jìn)行消重,存儲(chǔ)消重后的塊文件與hash值的映射關(guān)系;查詢所述文件消重服務(wù)器中是否存儲(chǔ)有該hash值,若有,則表明所述文件上傳服務(wù)器中已存儲(chǔ)有該hash值所對(duì)應(yīng)的塊文件。
[0017]可選地,其中,所述映射關(guān)系為一對(duì)一的映射關(guān)系。
[0018]可選地,所述分塊器還配置為:將本文件分為相同塊長(zhǎng)的塊文件;或者將本文件分為不同塊長(zhǎng)的塊文件。
[0019]依據(jù)本發(fā)明的另一個(gè)方面,還提供了一種文件傳輸系統(tǒng),包括客戶端以及文件上傳服務(wù)器:所述文件上傳服務(wù)器,配置為存儲(chǔ)不同客戶端上傳的文件;任一客戶端,配置為根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊以得到至少兩個(gè)塊文件;查詢所述文件上傳服務(wù)器中是否已存儲(chǔ)有所述文件的部分塊文件;根據(jù)查詢結(jié)果選擇未存儲(chǔ)在所述文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳。
[0020]可選地,還包括:文件消重服務(wù)器,配置為所述文件消重服務(wù)器對(duì)所述文件上傳服務(wù)器中存儲(chǔ)的塊文件進(jìn)行消重,存儲(chǔ)消重后的塊文件與hash值的映射關(guān)系;所述客戶端,還配置為計(jì)算每個(gè)塊文件的hash值;將各hash值發(fā)送至所述文件消重服務(wù)器,查詢所述文件上傳服務(wù)器中是否存儲(chǔ)有該hash值對(duì)應(yīng)的塊文件。
[0021]依據(jù)本發(fā)明實(shí)施例,客戶端對(duì)即將上傳的文件進(jìn)行分塊之后,客戶端首先查詢文件上傳服務(wù)器中是否已存儲(chǔ)有本文件的部分塊文件,其次,客戶端根據(jù)查詢結(jié)果選擇未存儲(chǔ)在文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳,解決了現(xiàn)有技術(shù)提到的,當(dāng)客戶端對(duì)已上傳部分文件的文件進(jìn)行上傳時(shí),仍需要從頭開(kāi)始上傳文件的問(wèn)題。本發(fā)明實(shí)施例中,客戶端對(duì)文件進(jìn)行傳輸時(shí),能夠僅選擇未存儲(chǔ)在文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳,并不需要對(duì)已上傳部分再次進(jìn)行重傳,達(dá)到了節(jié)約網(wǎng)絡(luò)資源(包括用戶所使用的網(wǎng)絡(luò)資源以及服務(wù)器的帶寬資源等)的有益效果,節(jié)省客戶端上傳文件的時(shí)間,提高用戶體驗(yàn)。
[0022]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
[0023]根據(jù)下文結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會(huì)更加明了本發(fā)明的上述以及其他目的、優(yōu)點(diǎn)和特征。
【專利附圖】
【附圖說(shuō)明】
[0024]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:[0025]圖1示出了根據(jù)【背景技術(shù)】的文件傳輸方法的處理流程圖;
[0026]圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的文件傳輸方法的處理流程圖;
[0027]圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的客戶端的結(jié)構(gòu)示意圖;
[0028]圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的文件傳輸系統(tǒng)的結(jié)構(gòu)示意圖;
[0029]圖5示出了根據(jù)本發(fā)明一個(gè)優(yōu)選實(shí)施例的文件傳輸方法的處理流程圖;以及
[0030]圖6示出了根據(jù)本發(fā)明另一個(gè)優(yōu)選實(shí)施例的文件傳輸方法的處理流程圖。
【具體實(shí)施方式】
[0031]在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見(jiàn)的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
[0032]相關(guān)技術(shù)中提及,在一個(gè)文件上傳過(guò)程中,若客戶端斷開(kāi)導(dǎo)致文件終止上傳,那么再次上傳時(shí),仍需要從頭開(kāi)始上傳。這極大地浪費(fèi)了網(wǎng)絡(luò)資源、帶寬資源,并增加客戶端上傳文件的時(shí)間。
[0033]為解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供了一種文件傳輸方法,用于將文件從客戶端上傳至文件上傳服務(wù)器。圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的文件傳輸方法的處理流程圖。如圖2所示,該流程至少包括步驟S202到步驟S206。
[0034]步驟S202、客戶端根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊,得到至少兩個(gè)塊文件。
[0035]步驟S204、客戶端查詢文件上傳服務(wù)器中是否已存儲(chǔ)有本文件的部分塊文件。
[0036]步驟S206、客戶端根據(jù)查詢結(jié)果選擇未存儲(chǔ)在文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳。
[0037]依據(jù)本發(fā)明實(shí)施例,客戶端對(duì)即將上傳的文件進(jìn)行分塊之后,客戶端首先查詢文件上傳服務(wù)器中是否已存儲(chǔ)有本文件的部分塊文件,其次,客戶端根據(jù)查詢結(jié)果選擇未存儲(chǔ)在文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳,解決了現(xiàn)有技術(shù)提到的,當(dāng)客戶端對(duì)已上傳部分文件的文件進(jìn)行上傳時(shí),仍需要從頭開(kāi)始上傳文件的問(wèn)題。本發(fā)明實(shí)施例中,客戶端對(duì)文件進(jìn)行傳輸時(shí),能夠僅選擇未存儲(chǔ)在文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳,并不需要對(duì)已上傳部分再次進(jìn)行重傳,達(dá)到了節(jié)約網(wǎng)絡(luò)資源(包括用戶所使用的網(wǎng)絡(luò)資源以及服務(wù)器的帶寬資源等)的有益效果,節(jié)省客戶端上傳文件的時(shí)間。
[0038]具體地,如圖2中步驟S202所示,客戶端根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊,得到至少兩個(gè)塊文件。本發(fā)明實(shí)施例中,客戶端對(duì)即將上傳的文件進(jìn)行分塊所依據(jù)的預(yù)設(shè)規(guī)則可以是根據(jù)文件內(nèi)容對(duì)本文件進(jìn)行分塊,還可以是根據(jù)文件的大小對(duì)本文件進(jìn)行分塊,本發(fā)明實(shí)施例并不對(duì)此加以限定。優(yōu)選地,本發(fā)明實(shí)施例中,該預(yù)設(shè)規(guī)則可以是將本文件分為相同塊長(zhǎng)的塊文件,還可以是將本文件分為不同塊長(zhǎng)的塊文件。客戶端能夠根據(jù)具體傳輸路徑、帶寬等信息確定使用哪種預(yù)設(shè)規(guī)則將本文件分為塊文件。
[0039]當(dāng)客戶端根據(jù)預(yù)設(shè)規(guī)則將本文件分為至少兩個(gè)塊文件之后,執(zhí)行如圖2所述的步驟S204,客戶端查詢文件上傳服務(wù)器中是否已存儲(chǔ)有本文件的部分塊文件。查詢的具體方式有多種,例如,可以在每個(gè)塊文件上設(shè)置一個(gè)可查詢的唯一標(biāo)識(shí),利用該唯一標(biāo)識(shí)進(jìn)行查詢,也可以利用每個(gè)塊文件的自身的性能及信息進(jìn)行查詢,等等。
[0040]本發(fā)明實(shí)施例提供了一種任選的查詢方式,S卩,利用hash值進(jìn)行查詢,具體地,客戶端計(jì)算每個(gè)塊文件的hash值,并將各個(gè)塊文件的hash值發(fā)送至文件消重服務(wù)器。文件消重服務(wù)器接收到每個(gè)塊文件的hash值之后,對(duì)文件上傳服務(wù)器中存儲(chǔ)的塊文件進(jìn)行消重,并存儲(chǔ)消重后的塊文件與hash值的映射關(guān)系??蛻舳瞬樵兾募蟼鞣?wù)器中是否已存儲(chǔ)有文件的部分塊文件時(shí),查詢文件消重服務(wù)器中是否存儲(chǔ)有與該塊文件有映射關(guān)系的hash值。若文件消重服務(wù)器中已存儲(chǔ)有該hash值,則表明文件上傳服務(wù)器中已存儲(chǔ)有該hash值所對(duì)應(yīng)的塊文件。
[0041]上文提及,hash值與塊文件間存在映射關(guān)系,該映射關(guān)系可以預(yù)先設(shè)置為一對(duì)一,或一對(duì)多,或多對(duì)一,等等。若同一塊文件具備不同的hash值,那么,同一塊文件可能會(huì)被多次上傳,造成浪費(fèi)資源。同理,若不同塊文件具備相同的hash值,則可能造成部分塊文件無(wú)法上傳,使得文件數(shù)據(jù)包丟失。因此,本發(fā)明實(shí)施例中,文件消重服務(wù)器中存儲(chǔ)的塊文件與hash值的可選映射關(guān)系為一對(duì)一的映射關(guān)系。由于塊文件與hash值的映射關(guān)系為一對(duì)一映射關(guān)系,即一個(gè)hash值僅代表一個(gè)塊文件,則客戶端能夠通過(guò)查詢文件消重服務(wù)器中是否存儲(chǔ)有與該塊文件對(duì)應(yīng)的hash值判斷該塊文件是否已上傳至文件上傳服務(wù)器,減少了查找塊文件的時(shí)間,進(jìn)而提高文件傳輸效率。
[0042]客戶端查詢到文件上傳服務(wù)器中已存儲(chǔ)的部分塊文件之后,參見(jiàn)圖2中的步驟S206,客戶端根據(jù)查詢結(jié)果選擇未存儲(chǔ)在文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳。
[0043]基于上文各優(yōu)選實(shí)施例提供的文件傳輸方法,基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供了一種客戶端,用于把文件上傳至文件上傳服務(wù)器,以實(shí)現(xiàn)上述文件傳輸方法。
[0044]圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的客戶端的結(jié)構(gòu)示意圖。參見(jiàn)圖3,本發(fā)明實(shí)施例的客戶端300至少包括:分塊器310、查詢器320以及傳輸器330。
[0045]現(xiàn)介紹本發(fā)明實(shí)施例的客戶端300的各器件或組成的功能以及各部分間的連接關(guān)系:
[0046]分塊器310,配置為根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊以得到至少兩個(gè)塊文件。
[0047]查詢器320,與分塊器310耦合,配置為查詢文件上傳服務(wù)器中是否已存儲(chǔ)有分塊器310分塊得到的即將上傳的文件的部分塊文件。
[0048]傳輸器330,與查詢器320耦合,配置為根據(jù)查詢器320的查詢結(jié)果選擇未存儲(chǔ)在文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳。
[0049]依據(jù)本發(fā)明實(shí)施例,客戶端300對(duì)即將上傳的文件進(jìn)行分塊之后,客戶端300首先查詢文件上傳服務(wù)器中是否已存儲(chǔ)有本文件的部分塊文件,其次,客戶端300根據(jù)查詢結(jié)果選擇未存儲(chǔ)在文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳,解決了現(xiàn)有技術(shù)提到的,當(dāng)客戶端300對(duì)已上傳部分文件的文件進(jìn)行上傳時(shí),仍需要從頭開(kāi)始上傳文件的問(wèn)題。本發(fā)明實(shí)施例中,客戶端300對(duì)文件進(jìn)行傳輸時(shí),能夠僅選擇未存儲(chǔ)在文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳,并不需要對(duì)已上傳部分再次進(jìn)行重傳,達(dá)到了節(jié)約網(wǎng)絡(luò)資源(包括用戶所使用的網(wǎng)絡(luò)資源以及服務(wù)器的帶寬資源等)的有益效果,節(jié)省客戶端300上傳文件的時(shí)間。
[0050]具體地,如圖3所示,客戶端300中的分塊器310根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊,得到至少兩個(gè)塊文件。本發(fā)明實(shí)施例中,分塊器310對(duì)即將上傳的文件進(jìn)行分塊所依據(jù)的預(yù)設(shè)規(guī)則可以是根據(jù)文件內(nèi)容對(duì)本文件進(jìn)行分塊,還可以是根據(jù)文件的大小對(duì)本文件進(jìn)行分塊,本發(fā)明實(shí)施例并不對(duì)此加以限定。任選地,本發(fā)明實(shí)施例中,該預(yù)設(shè)規(guī)則可以是將本文件分為相同塊長(zhǎng)的塊文件,還可以是將本文件分為不同塊長(zhǎng)的塊文件??蛻舳?00能夠根據(jù)具體傳輸路徑、帶寬等信息確定使用哪種預(yù)設(shè)規(guī)則將本文件分為塊文件。
[0051]當(dāng)分塊器310根據(jù)預(yù)設(shè)規(guī)則將本文件分為至少兩個(gè)塊文件之后,查詢器320執(zhí)行查詢操作,查詢文件上傳服務(wù)器中是否已存儲(chǔ)有本文件的部分塊文件。查詢器320查詢的具體過(guò)程有多種,例如,可以在每個(gè)塊文件上設(shè)置一個(gè)可查詢的唯一標(biāo)識(shí),利用該唯一標(biāo)識(shí)進(jìn)行查詢,也可以利用每個(gè)塊文件的自身的性能及信息進(jìn)行查詢,等等。
[0052]本發(fā)明實(shí)施例提供了一種可選的查詢方式,S卩,利用hash值進(jìn)行查詢,具體地,查詢器320計(jì)算每個(gè)塊文件的hash值,并將各個(gè)塊文件的hash值發(fā)送至文件消重服務(wù)器。文件消重服務(wù)器接收到每個(gè)塊文件的hash值之后,對(duì)文件上傳服務(wù)器中存儲(chǔ)的塊文件進(jìn)行消重,并存儲(chǔ)消重后的塊文件與hash值的映射關(guān)系。查詢器320查詢文件上傳服務(wù)器中是否存儲(chǔ)有本文件的塊文件時(shí),查詢文件消重服務(wù)器中是否存儲(chǔ)有與該塊文件有映射關(guān)系的hash值。若文件消重服務(wù)器中已存儲(chǔ)有該hash值,則表明文件上傳服務(wù)器中已存儲(chǔ)有該hash值對(duì)應(yīng)的塊文件。
[0053]上文提及,hash值與塊文件間存在映射關(guān)系,該映射關(guān)系可以預(yù)先設(shè)置為一對(duì)一,或一對(duì)多,或多對(duì)一,等等。若同一塊文件具備不同的hash值,那么,同一塊文件可能會(huì)被多次上傳,造成浪費(fèi)資源。同理,若不同塊文件具備相同的hash值,則可能造成部分塊文件無(wú)法上傳,使得文件數(shù)據(jù)包丟失。因此,本發(fā)明實(shí)施例中,文件消重服務(wù)器中存儲(chǔ)的塊文件與hash值的可選映射關(guān)系為一對(duì)一的映射關(guān)系。由于塊文件與hash值的映射關(guān)系為一對(duì)一映射關(guān)系,即一個(gè)hash值僅代表一個(gè)塊文件,則查詢器320能夠通過(guò)查詢文件消重服務(wù)器中是否存儲(chǔ)有與該塊文件對(duì)應(yīng)的hash值判斷該塊文件是否已上傳至文件上傳服務(wù)器,減少了查找塊文件的時(shí)間,進(jìn)而提高文件傳輸效率。
[0054]查詢器320查詢到文件上傳服務(wù)器中已存儲(chǔ)的部分塊文件之后,傳輸器330根據(jù)查詢器320的查詢結(jié)果選擇未存儲(chǔ)在文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳,將本文件傳輸至文件上傳服務(wù)器。
[0055]基于上文各優(yōu)選實(shí)施例提供的文件傳輸方法以及文件傳輸設(shè)備,基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種文件傳輸系統(tǒng)。圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的文件傳輸系統(tǒng)的結(jié)構(gòu)示意圖。如圖4所示,本發(fā)明實(shí)施例中的文件傳輸系統(tǒng)至少包括:客戶端300、文件上傳服務(wù)器400以及文件消重服務(wù)器500。
[0056]現(xiàn)介紹本發(fā)明實(shí)施例的文件傳輸系統(tǒng)中的各器件或組成的功能以及各部分間的連接關(guān)系。文件傳輸系統(tǒng)中的文件上傳服務(wù)器400存儲(chǔ)不同客戶端上傳的文件。如圖4所示的客戶端300首先根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊以得到至少兩個(gè)塊文件,并查詢文件上傳服務(wù)器400中是否已存儲(chǔ)有本文件的部分塊文件。其次,客戶端300根據(jù)查詢結(jié)果選擇未存儲(chǔ)在文件上傳服務(wù)器400中的部分塊文件進(jìn)行上傳。
[0057]依據(jù)本發(fā)明實(shí)施例,客戶端300對(duì)即將上傳的文件進(jìn)行分塊之后,客戶端300首先查詢文件上傳服務(wù)器400中是否已存儲(chǔ)有本文件的部分塊文件,其次,客戶端300根據(jù)查詢結(jié)果選擇未存儲(chǔ)在文件上傳服務(wù)器400中的部分塊文件進(jìn)行上傳,解決了現(xiàn)有技術(shù)提到的,當(dāng)客戶端300對(duì)已上傳部分文件的文件進(jìn)行上傳時(shí),仍需要從頭開(kāi)始上傳文件的問(wèn)題。本發(fā)明實(shí)施例中,客戶端300對(duì)文件進(jìn)行傳輸時(shí),能夠僅選擇未存儲(chǔ)在文件上傳服務(wù)器400中的部分塊文件進(jìn)行上傳,并不需要對(duì)已上傳部分再次進(jìn)行重傳,達(dá)到了節(jié)約網(wǎng)絡(luò)資源(包括用戶所使用的網(wǎng)絡(luò)資源以及服務(wù)器的帶寬資源等)的有益效果,節(jié)省客戶端300上傳文件的時(shí)間,提聞?dòng)脩趔w驗(yàn)。
[0058]具體地,如圖4所示,客戶端300中的分塊器310根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊以得到至少兩個(gè)塊文件。本發(fā)明實(shí)施例中,分塊器310對(duì)即將上傳的文件進(jìn)行分塊所依據(jù)的預(yù)設(shè)規(guī)則可以是根據(jù)文件內(nèi)容對(duì)本文件進(jìn)行分塊,還可以是根據(jù)文件的大小對(duì)本文件進(jìn)行分塊,本發(fā)明實(shí)施例并不對(duì)此加以限定。優(yōu)選地,本發(fā)明實(shí)施例中,該預(yù)設(shè)規(guī)則可以是將本文件分為相同塊長(zhǎng)的塊文件,還可以是將本文件分為不同塊長(zhǎng)的塊文件。客戶端300能夠根據(jù)具體傳輸路徑、帶寬等信息確定使用哪種預(yù)設(shè)規(guī)則將本文件分為塊文件。
[0059]當(dāng)分塊器310根據(jù)預(yù)設(shè)規(guī)則將文件分為至少兩個(gè)塊文件之后,查詢器320查詢文件上傳服務(wù)器400中是否已存儲(chǔ)有文件的部分塊文件。查詢器320查詢的具體過(guò)程有多種,例如,可以在每個(gè)塊文件上設(shè)置一個(gè)可查詢的唯一標(biāo)識(shí),利用該唯一標(biāo)識(shí)進(jìn)行查詢,也可以利用每個(gè)塊文件的自身的性能及信息進(jìn)行查詢,等等。
[0060]本發(fā)明實(shí)施例提供了一種優(yōu)選的查詢方式,S卩,利用hash值進(jìn)行查詢,具體地,查詢器320計(jì)算每個(gè)塊文件的hash值,并將各個(gè)塊文件的hash值發(fā)送至文件消重服務(wù)器500。文件消重服務(wù)器500接收到每個(gè)塊文件的hash值之后,對(duì)文件上傳服務(wù)器400中存儲(chǔ)的塊文件進(jìn)行消重,并存儲(chǔ)消重后的塊文件與hash值的映射關(guān)系。查詢器320查詢文件上傳服務(wù)器400是否存儲(chǔ)有文件的塊文件時(shí),查詢文件消重服務(wù)器500中是否存儲(chǔ)有與該塊文件有映射關(guān)系的hash值。若文件消重服務(wù)器500中已存儲(chǔ)有該hash值,則表明文件上傳服務(wù)器400中已存儲(chǔ)有該hash值對(duì)應(yīng)的塊文件。
[0061]上文提及,hash值與塊文件間存在映射關(guān)系,該映射關(guān)系可以預(yù)先設(shè)置為一對(duì)一,或一對(duì)多,或多對(duì)一,等等。若同一塊文件具備不同的hash值,那么,同一塊文件可能會(huì)被多次上傳,造成浪費(fèi)資源。同理,若不同塊文件具備相同的hash值,則可能造成部分塊文件無(wú)法上傳,使得文件數(shù)據(jù)包丟失。因此,本發(fā)明實(shí)施例中,文件消重服務(wù)器500中存儲(chǔ)的塊文件與hash值的優(yōu)選映射關(guān)系,即一個(gè)hash值僅代表一個(gè)塊文件,則查詢器320能夠通過(guò)查詢文件消重服務(wù)器500中是否存儲(chǔ)有與該塊文件對(duì)應(yīng)的hash值判斷該塊文件是否已上傳至文件上傳服務(wù)器400,減少了查找塊文件的時(shí)間,進(jìn)而提高文件傳輸效率。
[0062]查詢器320查詢到文件上傳服務(wù)器400中已存儲(chǔ)的部分塊文件之后,傳輸器330根據(jù)查詢器320的查詢結(jié)果選擇未存儲(chǔ)在文件上傳服務(wù)器400中的部分塊文件進(jìn)行上傳,將文件傳輸至文件上傳服務(wù)器400。文件上傳服務(wù)器400存儲(chǔ)不同客戶端上傳的文件。
[0063]實(shí)施例一
[0064]圖5示出了根據(jù)本發(fā)明一個(gè)優(yōu)選實(shí)施例的文件傳輸方法的流程圖,用于支持上述任意一個(gè)文件傳輸方法、設(shè)備及系統(tǒng),將上述文件傳輸方法、設(shè)備及系統(tǒng)闡述得更清楚明白。需要注意的是,圖5所示的文件傳輸方法為上傳一個(gè)文件上傳服務(wù)器中不存在的文件的流程圖。
[0065]如圖5所示,客戶端根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊,得到至少兩個(gè)塊文件??蛻舳藢⒓磳⑸蟼鞯奈募譃橹辽賰蓚€(gè)塊文件之后,執(zhí)行如圖5所示的步驟S501,計(jì)算每個(gè)塊文件的hash值,并將各個(gè)塊文件的hash值上傳至文件上傳服務(wù)器,由文件上傳服務(wù)器發(fā)送hash值至文件消重服務(wù)器,通過(guò)hash值查看文件上傳服務(wù)器中是否存在本文件的塊文件。文件消重服務(wù)器接收到每個(gè)塊文件的hash值之后,執(zhí)行步驟S502,查詢是否存在每個(gè)塊文件的hash值,并執(zhí)行如圖5中的步驟S503,返回代表塊文件不存在的狀態(tài)碼。
[0066]參見(jiàn)圖5中的步驟S504,客戶端接收到該狀態(tài)碼,得到查詢結(jié)果,即文件上傳服務(wù)器中不存在即將上傳的文件。根據(jù)該查詢結(jié)果,客戶端執(zhí)行步驟S505,將即將上傳的文件的每個(gè)塊文件以及每個(gè)塊文件的hash值逐一進(jìn)行上傳。文件上傳服務(wù)器執(zhí)行如圖5中所示的步驟S506,存儲(chǔ)客戶端傳輸?shù)膲K文件。由文件消重服務(wù)器執(zhí)行步驟S507,接收每個(gè)塊文件的hash值,對(duì)文件上傳服務(wù)器中存儲(chǔ)的塊文件進(jìn)行消重,并存儲(chǔ)消重后的塊文件與hash值一對(duì)一的映射關(guān)系。
[0067]另外,文件上傳服務(wù)器執(zhí)行步驟S508,返回塊文件已存儲(chǔ)的結(jié)果至客戶端??蛻舳藞?zhí)行步驟S509,對(duì)即將上傳的文件的每個(gè)塊文件進(jìn)行循環(huán)上傳,直至即將上傳的文件全部傳輸至文件上傳服務(wù)器,或者客戶端與文件上傳服務(wù)器之間的連接斷開(kāi)。
[0068]實(shí)施例二
[0069]圖6示出了根據(jù)本發(fā)明另一個(gè)優(yōu)選實(shí)施例的文件傳輸方法的流程圖,用于支持上述任意一個(gè)文件傳輸方法、設(shè)備及系統(tǒng),將上述文件傳輸方法、設(shè)備及系統(tǒng)闡述得更清楚明白。需要注意的是,圖6所示的文件傳輸方法中傳輸?shù)奈募槲募蟼鞣?wù)器中已存在部分塊文件的文件。
[0070]如圖6所示,客戶端根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊,得到至少兩個(gè)塊文件??蛻舳藢⒓磳⑸蟼鞯奈募譃橹辽賰蓚€(gè)塊文件之后,執(zhí)行如圖6所示的步驟S601,計(jì)算每個(gè)塊文件的hash值,并將各個(gè)塊文件分為至少兩個(gè)塊文件之后,計(jì)算每個(gè)塊文件的hash值,并將各個(gè)塊文件的hash值上傳至文件上傳服務(wù)器,由文件上傳服務(wù)器發(fā)送hash值至文件消重服務(wù)器,通過(guò)hash值查看文件上傳服務(wù)器中是否存在塊文件。文件消重服務(wù)器接收到每個(gè)塊文件的hash值之后,執(zhí)行步驟S602,查詢是否存在每個(gè)塊文件的hash值,并執(zhí)行如圖6中的步驟S603,返回存在的部分塊文件的狀態(tài)碼。
[0071]參見(jiàn)圖6中的步驟S604,客戶端接收到該狀態(tài)碼,得到查詢結(jié)果。根據(jù)查詢結(jié)果,客戶端執(zhí)行步驟S605,上傳文件上傳服務(wù)器中未存儲(chǔ)的塊文件及其hash值。文件上傳服務(wù)器執(zhí)行如圖6中所示的步驟S606,存儲(chǔ)客戶端傳輸?shù)膲K文件。由文件消重服務(wù)器執(zhí)行步驟S607,接收每個(gè)未存儲(chǔ)的塊文件的hash值,對(duì)文件上傳服務(wù)器中存儲(chǔ)的塊文件進(jìn)行消重,并存儲(chǔ)消重后的塊文件與hash值一對(duì)一的映射關(guān)系。
[0072]另外,文件上傳服務(wù)器執(zhí)行如圖6中所示的步驟S608,返回塊文件已存儲(chǔ)的結(jié)果至客戶端??蛻舳藞?zhí)行步驟S609,對(duì)塊文件進(jìn)行循環(huán)上傳,直至文件上傳服務(wù)器未存儲(chǔ)的塊文件全部存儲(chǔ)至文件上傳服務(wù)器,或者客戶端與文件上傳服務(wù)器之間的連接斷開(kāi)。
[0073]根據(jù)上述任意一個(gè)優(yōu)選實(shí)施例或多個(gè)優(yōu)選實(shí)施例的組合,本發(fā)明實(shí)施例能夠達(dá)到如下有益效果:
[0074]依據(jù)本發(fā)明實(shí)施例,客戶端對(duì)即將上傳的文件進(jìn)行分塊之后,客戶端首先查詢文件上傳服務(wù)器中是否已存儲(chǔ)有本文件的部分塊文件,其次,客戶端根據(jù)查詢結(jié)果選擇未存儲(chǔ)在文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳,解決了現(xiàn)有技術(shù)提到的,當(dāng)客戶端對(duì)已上傳部分文件的文件進(jìn)行上傳時(shí),仍需要從頭開(kāi)始上傳文件的問(wèn)題。本發(fā)明實(shí)施例中,客戶端對(duì)文件進(jìn)行傳輸時(shí),能夠僅選擇未存儲(chǔ)在文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳,并不需要對(duì)已上傳部分再次進(jìn)行重傳,達(dá)到了節(jié)約網(wǎng)絡(luò)資源(包括用戶所使用的網(wǎng)絡(luò)資源以及服務(wù)器的帶寬資源等)的有益效果,節(jié)省客戶端上傳文件的時(shí)間,提高用戶體驗(yàn)。
[0075]在此處所提供的說(shuō)明書中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書的理解。
[0076]類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
[0077]本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
[0078]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
[0079]本發(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 )來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的文件傳輸設(shè)備中的一些或者全部部件的一些或者全部功能。本發(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)上提供,或者以任何其他形式提供。
[0080]應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(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ī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0081]至此,本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識(shí)到,雖然本文已詳盡示出和描述了本發(fā)明的多個(gè)示例性實(shí)施例,但是,在不脫離本發(fā)明精神和范圍的情況下,仍可根據(jù)本發(fā)明公開(kāi)的內(nèi)容直接確定或推導(dǎo)出符合本發(fā)明原理的許多其他變型或修改。因此,本發(fā)明的范圍應(yīng)被理解和認(rèn)定為覆蓋了所有這些其他變型或修改。
【權(quán)利要求】
1.一種文件傳輸方法,用于將文件從客戶端上傳至文件上傳服務(wù)器,該方法包括: 根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊以得到至少兩個(gè)塊文件; 查詢所述文件上傳服務(wù)器中是否已存儲(chǔ)有所述文件的部分塊文件; 根據(jù)查詢結(jié)果選擇未存儲(chǔ)在所述文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳。
2.根據(jù)權(quán)利要求1所述的方法,其中,查詢所述文件上傳服務(wù)器中是否已存儲(chǔ)有所述文件的部分塊文件,包括: 計(jì)算每個(gè)塊文件的哈希hash值; 將各hash值發(fā)送至文件消重服務(wù)器,其中,所述文件消重服務(wù)器對(duì)所述文件上傳服務(wù)器中存儲(chǔ)的塊文件進(jìn)行消重,存儲(chǔ)消重后的塊文件與hash值的映射關(guān)系; 查詢所述文件消重服務(wù)器中是否存儲(chǔ)有該hash值,若有,則表明所述文件上傳服務(wù)器中已存儲(chǔ)有該hash值所對(duì)應(yīng)的塊文件。
3.根據(jù)權(quán)利要求2所述的方法,其中,所述映射關(guān)系為一對(duì)一的映射關(guān)系。
4.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的方法,其中,所述預(yù)設(shè)規(guī)則包括: 將本文件分為相同塊長(zhǎng)的塊文件;或者 將本文件分為不同塊長(zhǎng)的塊文件。
5.一種客戶端,用于把文件上傳至文件上傳服務(wù)器,其包括: 分塊器,配置為根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊以得到至少兩個(gè)塊文件;查詢器,配置為查詢所述文件上傳服務(wù)器中是否已存儲(chǔ)有所述文件的部分塊文件;傳輸器,配置為根據(jù)查詢結(jié)果選擇未存儲(chǔ)在所述文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳。
6.根據(jù)權(quán)利要求5所述的客戶端,其中,所述查詢器還配置為: 計(jì)算每個(gè)塊文件的hash值; 將各hash值發(fā)送至文件消重服務(wù)器,其中,所述文件消重服務(wù)器對(duì)所述文件上傳服務(wù)器中存儲(chǔ)的塊文件進(jìn)行消重,存儲(chǔ)消重后的塊文件與hash值的映射關(guān)系; 查詢所述文件消重服務(wù)器中是否存儲(chǔ)有該hash值,若有,則表明所述文件上傳服務(wù)器中已存儲(chǔ)有該hash值所對(duì)應(yīng)的塊文件。
7.根據(jù)權(quán)利要求6所述的客戶端,其中,所述映射關(guān)系為一對(duì)一的映射關(guān)系。
8.根據(jù)權(quán)利要求5至7任一項(xiàng)所述的客戶端,其中,所述分塊器還配置為: 將本文件分為相同塊長(zhǎng)的塊文件;或者 將本文件分為不同塊長(zhǎng)的塊文件。
9.一種文件傳輸系統(tǒng),包括客戶端以及文件上傳服務(wù)器: 所述文件上傳服務(wù)器,配置為存儲(chǔ)不同客戶端上傳的文件; 任一客戶端,配置為根據(jù)預(yù)設(shè)規(guī)則對(duì)即將上傳的文件進(jìn)行分塊以得到至少兩個(gè)塊文件;查詢所述文件上傳服務(wù)器中是否已存儲(chǔ)有所述文件的部分塊文件;根據(jù)查詢結(jié)果選擇未存儲(chǔ)在所述文件上傳服務(wù)器中的部分塊文件進(jìn)行上傳。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其中,還包括: 文件消重服務(wù)器,配置為所述文件消重服務(wù)器對(duì)所述文件上傳服務(wù)器中存儲(chǔ)的塊文件進(jìn)行消重,存儲(chǔ)消重后的塊文件與hash值的映射關(guān)系; 所述客戶端,還配置為計(jì)算每個(gè)塊文件的hash值;將各hash值發(fā)送至所述文件消重服務(wù)器,查詢所述文件上 傳服務(wù)器中是否存儲(chǔ)有該hash值對(duì)應(yīng)的塊文件。
【文檔編號(hào)】H04L29/08GK103561056SQ201310476415
【公開(kāi)日】2014年2月5日 申請(qǐng)日期:2013年10月12日 優(yōu)先權(quán)日:2013年10月12日
【發(fā)明者】楊銀波, 陳超 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司