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