專利名稱:存儲(chǔ)文件的方法和裝置以及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種存儲(chǔ)文件的方法和裝置以及系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)以及大數(shù)據(jù)存儲(chǔ)技術(shù)的發(fā)展,網(wǎng)絡(luò)存儲(chǔ)成為很多互聯(lián)網(wǎng)用戶保存數(shù)據(jù)的重要方式。網(wǎng)絡(luò)存儲(chǔ)的優(yōu)勢(shì)在于,一是存儲(chǔ)量大,對(duì)用戶來(lái)說(shuō)可以認(rèn)為是無(wú)限容量;二是無(wú)需用戶自行添置存儲(chǔ)設(shè)備和安裝存儲(chǔ)管理軟件,只要在能夠訪問(wèn)到互聯(lián)網(wǎng)的地方,都可以隨時(shí)獲取網(wǎng)絡(luò)存儲(chǔ)中的數(shù)據(jù)。在用戶進(jìn)行網(wǎng)絡(luò)存儲(chǔ)時(shí),目前通常是通過(guò)網(wǎng)頁(yè)來(lái)上傳數(shù)據(jù),此時(shí)客戶端設(shè)備一般基于超文本傳輸協(xié)議(HTTP協(xié)議),通過(guò)模擬超文本標(biāo)記語(yǔ)言HTML中的FORM表單提交方式來(lái)上傳文件。文件在上傳過(guò)程中,客戶端發(fā)送的HTTP請(qǐng)求中不僅包含F(xiàn)ORM表單業(yè)務(wù)數(shù)據(jù),還包含上傳文件。目前常見(jiàn)的服務(wù)端處理上傳文件的主要方式是業(yè)務(wù)服務(wù)器把客戶端提交的表單業(yè)務(wù)數(shù)據(jù)和文件的數(shù)據(jù)流分開(kāi),文件的數(shù)據(jù)流被存放到業(yè)務(wù)系統(tǒng)配置的臨時(shí)目錄中(采用磁盤存儲(chǔ)),會(huì)生成一個(gè)臨時(shí)文件(如:Struts2)。在執(zhí)行后續(xù)業(yè)務(wù)邏輯代碼時(shí),會(huì)把表單業(yè)務(wù)數(shù)據(jù)和文件的數(shù)據(jù)流(該文件句柄指向了本次上傳生成的臨時(shí)文件)傳給業(yè)務(wù)代碼,讓業(yè)務(wù)代碼處理本次上傳的業(yè)務(wù)邏輯,并讀取存在業(yè)務(wù)服務(wù)器中的臨時(shí)上傳文件,再傳送到文件存儲(chǔ)裝置中。目前的上述方式存在的主要問(wèn)題是向文件存儲(chǔ)裝置存儲(chǔ)文件的效率較低,并且需要占用業(yè)務(wù)服務(wù)器的大量硬盤資源。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種存儲(chǔ)文件的方法和裝置以及系統(tǒng),能夠較為高效地向文件存儲(chǔ)裝置存儲(chǔ)來(lái) 自于網(wǎng)絡(luò)客戶端提供的文件,并且節(jié)省業(yè)務(wù)服務(wù)器的硬盤資源。為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種存儲(chǔ)文件的方法。本發(fā)明的存儲(chǔ)文件的方法包括:步驟A:接收終端設(shè)備基于超文本傳輸協(xié)議以提交表單的方式發(fā)送的包含待存文件的數(shù)據(jù);步驟B:解析所述包含待存文件的數(shù)據(jù)以獲取所述待存文件中的部分?jǐn)?shù)據(jù)然后發(fā)送給文件存儲(chǔ)裝置;重復(fù)所述步驟A和步驟B,直至所述待存文件中的全部數(shù)據(jù)都已被發(fā)送給所述文件存儲(chǔ)裝置??蛇x地,在所述步驟B中,先將獲取的所述部分?jǐn)?shù)據(jù)保存在內(nèi)存中的緩存中,在緩存中的數(shù)據(jù)量達(dá)到預(yù)設(shè)值時(shí)將緩存中的數(shù)據(jù)發(fā)送給所述文件存儲(chǔ)裝置。根據(jù)本發(fā)明的另一方面,提供了一種存儲(chǔ)文件的裝置。本發(fā)明的存儲(chǔ)文件的裝置包括:接收模塊,用于接收終端設(shè)備基于超文本傳輸協(xié)議以提交表單的方式發(fā)送的包含待存文件的數(shù)據(jù);解析模塊,用于解析所述包含待存文件的數(shù)據(jù)以獲取所述待存文件中的部分?jǐn)?shù)據(jù);發(fā)送模塊,用于將所述解析模塊獲取到的所述部分?jǐn)?shù)據(jù)發(fā)送給文件存儲(chǔ)裝置??蛇x地,所述發(fā)送模塊還用于先將所述解析模塊獲取到的所述部分?jǐn)?shù)據(jù)保存在內(nèi)存中的緩存中,在緩存中的數(shù)據(jù)量達(dá)到預(yù)設(shè)值時(shí)將緩存中的數(shù)據(jù)發(fā)送給所述文件存儲(chǔ)裝置。根據(jù)本發(fā)明的又一方面,提供了一種存儲(chǔ)文件的系統(tǒng)。本發(fā)明的存儲(chǔ)文件的系統(tǒng)包括業(yè)務(wù)服務(wù)器和存儲(chǔ)服務(wù)器,其中,所述業(yè)務(wù)服務(wù)器,用于接收終端設(shè)備基于超文本傳輸協(xié)議以提交表單的方式發(fā)送的包含待存文件的數(shù)據(jù),解析所述包含待存文件的數(shù)據(jù)以獲取所述待存文件中的部分?jǐn)?shù)據(jù)然后發(fā)送給所述存儲(chǔ)服務(wù)器,直至所述待存文件中的全部數(shù)據(jù)都已被發(fā)送給所述存儲(chǔ)服務(wù)器;所述存儲(chǔ)服務(wù)器,用于存儲(chǔ)所述文件??蛇x地,所述業(yè)務(wù)服務(wù)器還用于先將獲取的所述部分?jǐn)?shù)據(jù)保存在內(nèi)存中的緩存中,在緩存中的數(shù)據(jù)量達(dá)到預(yù)設(shè)值時(shí)將緩存中的數(shù)據(jù)發(fā)送給所述存儲(chǔ)服務(wù)器。根據(jù)本發(fā)明的技術(shù)方案,在終端設(shè)備基于HTTP協(xié)議,以表單形式發(fā)送待存儲(chǔ)文件時(shí),業(yè)務(wù)服務(wù)器對(duì)收到的數(shù)據(jù)進(jìn)行實(shí)時(shí)解析,在解析過(guò)程中將其中的文件數(shù)據(jù)發(fā)送給文件存儲(chǔ)裝置,這種方式避免了 往業(yè)務(wù)服務(wù)器硬盤寫數(shù)據(jù),并且再?gòu)挠脖P讀數(shù)據(jù),提高系統(tǒng)性能,降低整個(gè)文件從用戶客戶端到業(yè)務(wù)服務(wù)器再到文件存儲(chǔ)裝置的整個(gè)文件傳輸時(shí)間;而且無(wú)需將文件全部保存到業(yè)務(wù)服務(wù)器內(nèi),在終端設(shè)備上傳文件的同時(shí)即向文件存儲(chǔ)裝置中存儲(chǔ),對(duì)于終端設(shè)備來(lái)說(shuō)這是一種無(wú)阻塞式的向文件存儲(chǔ)裝置上傳文件的過(guò)程,存儲(chǔ)效率較高,而且節(jié)省了業(yè)務(wù)服務(wù)器的硬盤資源。
附圖用于更好地理解本發(fā)明,不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。其中:圖1是根據(jù)本發(fā)明實(shí)施例的存儲(chǔ)文件的方法的基本步驟示意圖;圖2是根據(jù)本發(fā)明實(shí)施例的存儲(chǔ)文件的裝置的基本結(jié)構(gòu)的示意圖;圖3是根據(jù)本發(fā)明實(shí)施例的存儲(chǔ)文件的系統(tǒng)的基本結(jié)構(gòu)的示意圖。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明的示范性實(shí)施例做出說(shuō)明,其中包括本發(fā)明實(shí)施例的各種細(xì)節(jié)以助于理解,應(yīng)當(dāng)將它們認(rèn)為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)至IJ,可以對(duì)這里描述的實(shí)施例做出各種改變和修改,而不會(huì)背離本發(fā)明的范圍和精神。同樣,為了清楚和簡(jiǎn)明,以下的描述中省略了對(duì)公知功能和結(jié)構(gòu)的描述。在本實(shí)施例中,用戶使用終端設(shè)備以提交表單的方式發(fā)送數(shù)據(jù),該數(shù)據(jù)中包含表單業(yè)務(wù)數(shù)據(jù),也包含用戶要存到文件存儲(chǔ)裝置中的文件。業(yè)務(wù)服務(wù)器在收到該數(shù)據(jù)后進(jìn)行解析從而從中獲取文件然后發(fā)送給文件存儲(chǔ)裝置。該解析是在接收終端設(shè)備發(fā)送的數(shù)據(jù)的過(guò)程中實(shí)時(shí)進(jìn)行,即每次解析出的是文件中的部分?jǐn)?shù)據(jù),隨即發(fā)送給文件存儲(chǔ)裝置,一邊接收一邊解析、發(fā)送,直至文件的全部數(shù)據(jù)都已被發(fā)送給文件存儲(chǔ)裝置。具體可以采用圖1所示的步驟,圖1是根據(jù)本發(fā)明實(shí)施例的存儲(chǔ)文件的方法的基本步驟示意圖。步驟Sll:接收終端設(shè)備發(fā)送的包含待存文件的數(shù)據(jù)。本步驟中,終端設(shè)備仍是基于HTTP協(xié)議,以提交表單的方式發(fā)送文件,當(dāng)然也包含表單業(yè)務(wù)數(shù)據(jù)。步驟S12:對(duì)步驟Sll中收到的數(shù)據(jù)進(jìn)行解析。步驟S13:判斷是否解析到待存文件。若是,進(jìn)入步驟S14 ;否則返回步驟S12。
步驟S14:與文件存儲(chǔ)裝置建立連接。本步驟中,可以基于HTTP協(xié)議建立該連接。步驟S15:將當(dāng)前解析出的待存文件的數(shù)據(jù)發(fā)送給文件存儲(chǔ)裝置。在本步驟中,可以先將解析出的待存文件的數(shù)據(jù)存儲(chǔ)在本地,例如緩存在硬盤或內(nèi)存中開(kāi)辟的緩存中,在緩存中的數(shù)據(jù)量達(dá)到預(yù)設(shè)值時(shí)將緩存中的數(shù)據(jù)發(fā)送給文件存儲(chǔ)裝置。這里的預(yù)設(shè)值可以是緩存總體的容量。本實(shí)施例中,緩存中的數(shù)據(jù)很快將被發(fā)送到文件存儲(chǔ)裝置中,所以該緩存空間不需太大,這樣可以在內(nèi)存中開(kāi)辟緩存,以獲得較快的讀寫速度。步驟S16:判斷待存文件的數(shù)據(jù)是否全部被解析出。若是,則結(jié)束流程;否則返回步驟S15。圖2是根據(jù)本發(fā)明實(shí)施例的存儲(chǔ)文件的裝置的基本結(jié)構(gòu)的示意圖。如圖2所示,存儲(chǔ)文件的裝置20主要包括接收模塊21、解析模塊22、發(fā)送模塊23。接收模塊21用于接收終端設(shè)備基于超文本傳輸協(xié)議以提交表單的方式發(fā)送的包含待存文件的數(shù)據(jù);解析模塊22用于解析接收模塊21接收的數(shù)據(jù)以獲取待存文件中的部分?jǐn)?shù)據(jù);發(fā)送模塊23用于將解析模塊22獲取到的所述部分?jǐn)?shù)據(jù)發(fā)送給文件存儲(chǔ)裝置。發(fā)送模塊23還可用于先將解析模塊22獲取到的所述部分?jǐn)?shù)據(jù)保存在內(nèi)存中的緩存中,在緩存中的數(shù)據(jù)量達(dá)到預(yù)設(shè)值時(shí)將緩存中的數(shù)據(jù)發(fā)送給文件存儲(chǔ)裝置。圖3是根據(jù)本發(fā)明實(shí)施例的存儲(chǔ)文件的系統(tǒng)的基本結(jié)構(gòu)的示意圖。如圖3所示,存儲(chǔ)文件的系統(tǒng)30主要包括業(yè)務(wù)服務(wù)器31和存儲(chǔ)服務(wù)器32。存儲(chǔ)服務(wù)器32用于存儲(chǔ)文件,例如存儲(chǔ)圖中所示的多個(gè)與業(yè)務(wù)服務(wù)器31連接的終端設(shè)備33提供的文件。業(yè)務(wù)服務(wù)器31和存儲(chǔ)服務(wù)器32都可以采用服務(wù)器集群來(lái)實(shí)現(xiàn)。業(yè)務(wù)服務(wù)器31用于接收終端設(shè)備基于超文本傳輸協(xié)議以提交表單的方式發(fā)送的包含待存文件的數(shù)據(jù),解析包含待存文件的數(shù)據(jù)以獲取待存文件中的部分?jǐn)?shù)據(jù)然后發(fā)送給存儲(chǔ)服務(wù)器32,直至待存文件中的全部數(shù)據(jù)都已被發(fā)送給存儲(chǔ)服務(wù)器32。業(yè)務(wù)服務(wù)器31還可用于先將獲取的部分?jǐn)?shù)據(jù)保存在內(nèi)存中的緩存中,在緩存中的數(shù)據(jù)量達(dá)到預(yù)設(shè)值時(shí)將緩存中的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)器32。根據(jù)本發(fā)明實(shí)施例的技術(shù)方案,在終端設(shè)備基于HTTP協(xié)議,以表單形式發(fā)送待存儲(chǔ)文件時(shí),業(yè)務(wù)服務(wù)器對(duì)收到的數(shù)據(jù)進(jìn)行實(shí)時(shí)解析,在解析過(guò)程中將其中的文件數(shù)據(jù)發(fā)送給文件存儲(chǔ)裝置,這種方式避免了往業(yè)務(wù)服務(wù)器硬盤寫數(shù)據(jù),并且再?gòu)挠脖P讀數(shù)據(jù),提高系統(tǒng)性能,降低整個(gè)文件從用戶客戶端到業(yè)務(wù)服務(wù)器再到文件存儲(chǔ)裝置的整個(gè)文件傳輸時(shí)間;而且無(wú)需將文件全部保存到業(yè)務(wù)服務(wù)器內(nèi),在終端設(shè)備上傳文件的同時(shí)即向文件存儲(chǔ)裝置中存儲(chǔ),對(duì)于終端設(shè)備來(lái)說(shuō)這是一種無(wú)阻塞式的向文件存儲(chǔ)裝置上傳文件的過(guò)程,存儲(chǔ)效率較高,而且節(jié)省了業(yè)務(wù)服務(wù)器的硬盤資源。以上結(jié)合具體實(shí)施例描述了本發(fā)明的基本原理,但是,需要指出的是,對(duì)本領(lǐng)域的普通技術(shù)人員而言,能夠理解本發(fā)明的方法和設(shè)備的全部或者任何步驟或者部件,可以在任何計(jì)算裝置(包括處理器、存儲(chǔ)介質(zhì)等)或者計(jì)算裝置的網(wǎng)絡(luò)中,以硬件、固件、軟件或者它們的組合加以實(shí)現(xiàn),這是本領(lǐng)域普通技術(shù)人員在閱讀了本發(fā)明的說(shuō)明的情況下運(yùn)用他們的基本編程技能就能實(shí)現(xiàn)的。因此,本發(fā)明的目的還可以通過(guò)在任何計(jì)算裝置上運(yùn)行一個(gè)程序或者一組程序來(lái)實(shí)現(xiàn)。所述計(jì)算裝置可以是公知的通用裝置。因此,本發(fā)明的目的也可以僅僅通過(guò)提供包含實(shí)現(xiàn)所述方法或者裝置的程序代 碼的程序產(chǎn)品來(lái)實(shí)現(xiàn)。也就是說(shuō),這樣的程序產(chǎn)品也構(gòu)成本發(fā)明,并且存儲(chǔ)有這樣的程序產(chǎn)品的存儲(chǔ)介質(zhì)也構(gòu)成本發(fā)明。顯然,所述存儲(chǔ)介質(zhì)可以是任何公知的存儲(chǔ)介質(zhì)或者將來(lái)開(kāi)發(fā)出的任何存儲(chǔ)介質(zhì)。還需要指出的是,在本發(fā)明的裝置和方法中,顯然,各部件或各步驟是可以分解和/或重新組合的。這些分解和/或重新組合應(yīng)視為本發(fā)明的等效方案。并且,執(zhí)行上述系列處理的步驟可以自然地按照說(shuō)明的順序按時(shí)間順序執(zhí)行,但是并不需要一定按照時(shí)間順序執(zhí)行。某些步驟可以并行或彼此獨(dú)立地執(zhí)行。上述具體實(shí)施方式
,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限制。本領(lǐng)域技術(shù)人員應(yīng)該明白的是,取決于設(shè)計(jì)要求和其他因素,可以發(fā)生各種各樣的修改、組合、子組合和替代。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)范圍之內(nèi)。`
權(quán)利要求
1.一種存儲(chǔ)文件的方法,其特征在于,包括: 步驟A:接收終端設(shè)備基于超文本傳輸協(xié)議以提交表單的方式發(fā)送的包含待存文件的數(shù)據(jù); 步驟B:解析所述包含待存文件的數(shù)據(jù)以獲取所述待存文件中的部分?jǐn)?shù)據(jù)然后發(fā)送給文件存儲(chǔ)裝直; 重復(fù)所述步驟A和步驟B,直至所述待存文件中的全部數(shù)據(jù)都已被發(fā)送給所述文件存儲(chǔ)裝置。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述步驟B中,先將獲取的所述部分?jǐn)?shù)據(jù)保存在內(nèi)存中的緩存中,在緩存中的數(shù)據(jù)量達(dá)到預(yù)設(shè)值時(shí)將緩存中的數(shù)據(jù)發(fā)送給所述文件存儲(chǔ)裝置。
3.一種存儲(chǔ)文件的裝置,其特征在于,包括: 接收模塊,用于接收終端設(shè)備基于超文本傳輸協(xié)議以提交表單的方式發(fā)送的包含待存文件的數(shù)據(jù); 解析模塊,用于解析所述包含待存文件的數(shù)據(jù)以獲取所述待存文件中的部分?jǐn)?shù)據(jù); 發(fā)送模塊,用于將所述解析模塊獲取到的所述部分?jǐn)?shù)據(jù)發(fā)送給文件存儲(chǔ)裝置。
4.根據(jù)權(quán)利要求3所述的裝置,其特征在于,所述發(fā)送模塊還用于先將所述解析模塊獲取到的所述部分?jǐn)?shù)據(jù)保存在內(nèi)存中的緩存中,在緩存中的數(shù)據(jù)量達(dá)到預(yù)設(shè)值時(shí)將緩存中的數(shù)據(jù)發(fā)送給所述文件存儲(chǔ)裝置。
5.一種存儲(chǔ)文件的系統(tǒng) ,其特征在于,包括業(yè)務(wù)服務(wù)器和存儲(chǔ)服務(wù)器,其中, 所述業(yè)務(wù)服務(wù)器,用于接收終端設(shè)備基于超文本傳輸協(xié)議以提交表單的方式發(fā)送的包含待存文件的數(shù)據(jù),解析所述包含待存文件的數(shù)據(jù)以獲取所述待存文件中的部分?jǐn)?shù)據(jù)然后發(fā)送給所述存儲(chǔ)服務(wù)器,直至所述待存文件中的全部數(shù)據(jù)都已被發(fā)送給所述存儲(chǔ)服務(wù)器; 所述存儲(chǔ)服務(wù)器,用于存儲(chǔ)所述文件。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,所述業(yè)務(wù)服務(wù)器還用于先將獲取的所述部分?jǐn)?shù)據(jù)保存在內(nèi)存中的緩存中,在緩存中的數(shù)據(jù)量達(dá)到預(yù)設(shè)值時(shí)將緩存中的數(shù)據(jù)發(fā)送給所述存儲(chǔ)服務(wù)器。
全文摘要
本發(fā)明提供一種存儲(chǔ)文件的方法和裝置以及系統(tǒng),能夠較為高效地向文件存儲(chǔ)裝置存儲(chǔ)來(lái)自于網(wǎng)絡(luò)客戶端提供的文件,并且節(jié)省業(yè)務(wù)服務(wù)器的硬盤資源。本發(fā)明的存儲(chǔ)文件的方法包括步驟A接收終端設(shè)備基于超文本傳輸協(xié)議以提交表單的方式發(fā)送的包含待存文件的數(shù)據(jù);步驟B解析所述包含待存文件的數(shù)據(jù)以獲取所述待存文件中的部分?jǐn)?shù)據(jù)然后發(fā)送給文件存儲(chǔ)裝置;重復(fù)所述步驟A和步驟B,直至所述待存文件中的全部數(shù)據(jù)都已被發(fā)送給所述文件存儲(chǔ)裝置。
文檔編號(hào)H04L29/08GK103248701SQ20131018192
公開(kāi)日2013年8月14日 申請(qǐng)日期2013年5月16日 優(yōu)先權(quán)日2013年5月16日
發(fā)明者劉吉, 魏大安 申請(qǐng)人:北京京東尚科信息技術(shù)有限公司, 北京京東世紀(jì)貿(mào)易有限公司