本發(fā)明涉及計算機技術領域,特別是涉及一種文件傳輸方法和裝置。
背景技術:
傳統(tǒng)的文件傳輸方法中,對于大文件(通常指大于10MB的文件)的傳輸通常是先在客戶端進行拆分、編號,然后將分片數(shù)據(jù)逐個上傳到服務器,服務器逐個接收分片數(shù)據(jù),并將接收到的分片數(shù)據(jù)進行緩存,服務器在一個文件的所有分片數(shù)據(jù)接收完畢后,按照緩存的分片數(shù)據(jù)的順序合并成一個完整文件。
然而,傳統(tǒng)的這種文件傳輸方法,服務器需要對文件進行合并處理,由于帶寬的限制和并發(fā)傳輸?shù)那闆r,使得服務器的內(nèi)存被長時間且大量的占用。
技術實現(xiàn)要素:
基于此,有必要針對上述技術問題,提供一種能減少服務器資源消耗的文件傳輸方法和裝置。
一種文件傳輸方法,所述方法包括:
接收客戶端發(fā)送的將待發(fā)送文件按照預設大小分割后得到的多個分片數(shù)據(jù),所述分片數(shù)據(jù)包括分片信息和文件信息;
將所述分片數(shù)據(jù)存入到數(shù)據(jù)庫中。
在其中一個實施例中,所述分片信息包括分片序號,所述文件信息包括用于唯一標識所述待發(fā)送文件的文件標識、文件分割得到的總分片數(shù)和文件名稱。
在其中一個實施例中,所述方法還包括:對所述數(shù)據(jù)庫中的分片序號和文件標識這兩個字段分別建立索引。
在其中一個實施例中,所述方法還包括:接收客戶端發(fā)送的文件下載請求,所述文件下載請求攜帶請求下載文件的文件標識;以所述文件標識和分片序號為索引,從數(shù)據(jù)庫中查找出所述請求下載的文件對應的分片數(shù)據(jù)。
在其中一個實施例中,在所述從數(shù)據(jù)庫中查找出所述請求下載的文件對應的分片數(shù)據(jù)之后,所述方法還包括:將所述分片數(shù)據(jù)按照所述分片數(shù)據(jù)中的分片序號進行排序;將排序后的所述分片數(shù)據(jù)組裝成完整文件,將所述完整文件發(fā)送給所述客戶端。
在其中一個實施例中,在所述從數(shù)據(jù)庫中查找出所述請求下載的文件對應的分片數(shù)據(jù)之后,所述方法還包括:將所述請求下載的文件對應的分片數(shù)據(jù)發(fā)送給客戶端,以使所述客戶端根據(jù)所述分片數(shù)據(jù)的分片序號將所述分片數(shù)據(jù)組裝成完整文件。
一種文件傳輸裝置,所述裝置包括:
分片數(shù)據(jù)接收模塊,用于接收客戶端發(fā)送的將待發(fā)送文件按照預設大小分割后得到的多個分片數(shù)據(jù),所述分片數(shù)據(jù)包括分片信息和文件信息;
分片數(shù)據(jù)存儲模塊,用于將所述分片數(shù)據(jù)存入到數(shù)據(jù)庫中。
在其中一個實施例中,所述分片信息包括分片序號,所述文件信息包括用于唯一標識所述待發(fā)送文件的文件標識、文件分割得到的總分片數(shù)和文件名稱。
在其中一個實施例中,所述裝置還包括:索引建立模塊,用于對分片序號和文件標識這兩個字段分別建立索引。
在其中一個實施例中,所述裝置還包括:下載請求接收模塊,用于接收客戶端發(fā)送的文件下載請求,所述文件下載請求攜帶請求下載文件的文件標識;分片數(shù)據(jù)查找模塊,用于以所述文件標識和分片序號為索引,從數(shù)據(jù)庫中查找出所述請求下載的文件對應的分片數(shù)據(jù)。
在其中一個實施例中,所述裝置還包括:分片數(shù)據(jù)排序模塊,用于將所述分片數(shù)據(jù)按照所述分片中的分片序號進行排序;文件重組模塊,用于將排序后的所述分片數(shù)據(jù)組裝成完整文件;文件發(fā)送模塊,用于將所述完整文件發(fā)送給所述客戶端。
在其中一個實施例中,所述裝置還包括:分片數(shù)據(jù)發(fā)送模塊,用于將所述請求下載的文件對應的分片數(shù)據(jù)發(fā)送給客戶端,以使所述客戶端根據(jù)所述分片數(shù)據(jù)的分片序號將所述分片數(shù)據(jù)組裝成完整文件。
上述文件傳輸方法和裝置,通過接收客戶端發(fā)送的將待發(fā)送文件按照預設大小分割后得到的多個分片數(shù)據(jù),所述分片數(shù)據(jù)包括分片信息和文件信息,將所述分片數(shù)據(jù)存入到數(shù)據(jù)庫中。由于服務器接收到分片數(shù)據(jù)后,直接存儲至數(shù)據(jù)庫,無需等待所有分片數(shù)據(jù)接收完畢后,再進行文件重組的處理,使得服務器不再需要分配大量內(nèi)存來緩存分片數(shù)據(jù),同時用戶上傳的數(shù)據(jù)得到了及時處理,減少了服務器內(nèi)存的占用量和占用時間,從而減少了服務器資源的消耗。
附圖說明
圖1為一個實施例中文件傳輸方法的應用環(huán)境圖;
圖2為一個實施例中服務器的內(nèi)部結(jié)構(gòu)圖;
圖3為一個實施例中文件傳輸方法的流程圖;
圖4為一個實施例中下載文件的方法流程圖;
圖5為另一個實施例中下載文件的方法流程圖;
圖6為一個實施例中文件傳輸裝置的結(jié)構(gòu)框圖;
圖7為另一個實施例中文件傳輸裝置的結(jié)構(gòu)框圖;
圖8為又一個實施例中文件傳輸裝置的結(jié)構(gòu)框圖。
具體實施方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明實施例提供的文件傳輸方法可應用于如圖1所示的環(huán)境中。參考圖1所示,服務器102可接收客戶端104發(fā)送的數(shù)據(jù)并存儲至數(shù)據(jù)庫,也可從數(shù)據(jù)庫中查找出數(shù)據(jù)并發(fā)送給客戶端104。具體的,服務器102通過網(wǎng)絡與終端104進行通信,接收客戶端104發(fā)送的將待發(fā)送文件按照預設大小分割后得到的多個分片數(shù)據(jù),每個分片數(shù)據(jù)包括分片信息和文件信息,并將這些分片數(shù)據(jù)存儲至數(shù)據(jù)庫;服務器102接收客戶端104發(fā)送的文件下載請求,從數(shù)據(jù)庫中查找出分片數(shù)據(jù),直接發(fā)送給客戶端104或?qū)⒎制瑪?shù)據(jù)組裝成完整文件后,發(fā)送給終端104。這里的終端包括但不限于各種個人計算機、筆記本電腦、智能手機、平板電腦、便攜式穿戴設備等。
在一個實施例中,如圖2所示,還提供了一種服務器,該服務器包括通過系統(tǒng)總線連接的處理器、非易失性存儲介質(zhì)、內(nèi)存儲器、網(wǎng)絡連接口,非易失性存儲介質(zhì)中存儲有操作系統(tǒng)和一種文件傳輸裝置,該文件傳輸裝置用于執(zhí)行一種文件傳輸方法。該處理器用于提高計算和控制能力,支撐整個服務器的運行。內(nèi)存儲器用于為非易失性存儲介質(zhì)中的文件傳輸裝置的運行提供環(huán)境,該內(nèi)存儲器中可存儲有計算機可讀指令,該計算機可讀指令被處理器執(zhí)行時,可使得該處理器執(zhí)行一種文件傳輸方法。網(wǎng)絡接口用于與終端進行網(wǎng)絡通信,接收或發(fā)送數(shù)據(jù),例如接收終端發(fā)送的文件上傳請求,以及向終端發(fā)送分片數(shù)據(jù)或文件等。
在一個實施例中,如圖3所示,提供了一種文件傳輸方法,該方法以應用于如圖1所示的服務器進行舉例說明,包括:
步驟302,接收客戶端發(fā)送的將待發(fā)送文件按照預設大小分割后得到的多個分片數(shù)據(jù),分片數(shù)據(jù)包括分片信息和文件信息。
這里的文件,通常指大于10MB的文件。文件可以是文本、圖片、音頻、視頻等,本發(fā)明實施例不局限于某種特定類型或格式的文件。
由于帶寬的限制,將上述文件直接上傳,需要耗費大量時間,且當傳輸發(fā)生異常時,需要將整個文件重新上傳,不利于傳輸?shù)倪M行。為了應對這種情況,本實施例中,將待發(fā)送文件按照預設大小分割成多個分片數(shù)據(jù),每個分片數(shù)據(jù)包括分片信息和文件信息。這樣,各分片數(shù)據(jù)是相對獨立的,便可將所有分片數(shù)據(jù)并發(fā)上傳,且當傳輸發(fā)生異常時,只需將傳輸失敗的數(shù)據(jù)分片重新上傳,使得傳輸時間大大減少。
步驟304,將分片數(shù)據(jù)存儲至數(shù)據(jù)庫中。
服務器接收分片數(shù)據(jù)后,可直接將數(shù)據(jù)存入到數(shù)據(jù)庫中。由于分片數(shù)據(jù)包括分片信息和文件信息,因此根據(jù)分片數(shù)據(jù)本身即可查找到一個文件對應的所有分片數(shù)據(jù),分片數(shù)據(jù)無需按照順序進行傳輸,服務器接收到分片數(shù)據(jù)后,可直接存入數(shù)據(jù)庫中,無需在緩存中等待一個文件的其他分片數(shù)據(jù)傳輸完畢即可存儲。
本實施例中,由于服務器接收到分片數(shù)據(jù)后,直接存儲至數(shù)據(jù)庫,無需等待所有分片數(shù)據(jù)接收完畢后,再進行文件重組的處理,使得服務器不再需要分配大量內(nèi)存來緩存分片數(shù)據(jù),同時用戶上傳的數(shù)據(jù)得到了及時處理,減少了服務器內(nèi)存的占用量和占用時間,從而減少了服務器資源的消耗。
在一個實施例中,分片信息包括分片序號,用于對分割后的分片數(shù)據(jù)進行順序編號,便于后續(xù)的文件重組處理和數(shù)據(jù)丟失的準確定位;文件信息包括文件標識、總分片數(shù)和文件名稱,文件標識用于唯一標識待發(fā)送文件,即通過文件標識,可找到與之對應的唯一的文件,總分片數(shù)用于記錄文件分割后得到的分片總數(shù),便于后續(xù)判斷分片數(shù)據(jù)接收的完整性,文件名稱和文件標識對應。
本實施例中,文件傳輸方法還包括:對數(shù)據(jù)庫中的分片序號和文件標識這兩個字段分別建立索引。
索引是一個單獨的、物理的數(shù)據(jù)庫結(jié)構(gòu),它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的數(shù)據(jù)頁的邏輯指針清單。使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。本實施例中,通過對分片序號和文件標識這兩個字段分別建立索引,可進一步優(yōu)化分片數(shù)據(jù)的查找速度。
在一個實施例中,如圖4所示,上述文件傳輸方法還包括對文件進行下載的流程,具體包括:
步驟402,接收客戶端發(fā)送的文件下載請求,文件下載請求攜帶請求下載文件的文件標識。
本實施例中,客戶端將文件上傳到服務器后,還可通過客戶端對文件進行下載。具體的,客戶端可發(fā)起文件下載請求,服務器通過文件下載請求攜帶的請求下載文件的文件標識,可以從數(shù)據(jù)庫中查找出請求下載文件的所有數(shù)據(jù)分片??梢岳斫獾氖?,發(fā)起文件下載請求的客戶端可以是上傳文件的客戶端,也可以是非上傳文件的客戶端。
步驟404,以文件標識和分片序號為索引,從數(shù)據(jù)庫中查找出請求下載的文件對應的分片數(shù)據(jù)。
使用索引,可快速查找數(shù)據(jù)庫中的特定信息,在本實施例中,特定信息是請求下載的文件對應的分片數(shù)據(jù)。而根據(jù)文件標識和分片序號的兩級索引來查找請求下載的文件對應的分片數(shù)據(jù),可進一步提高查找速度。
步驟406,將分片數(shù)據(jù)按照分片數(shù)據(jù)中的分片序號進行排序。
分片數(shù)據(jù)在存儲到數(shù)據(jù)庫的時候,由于網(wǎng)絡的不穩(wěn)定性等因素,不能保證是按照分片序號順序插入到數(shù)據(jù)庫中的,那么從數(shù)據(jù)庫中查找出來的分片數(shù)據(jù)也很難確定是有序的,這就對后續(xù)文件的重組造成了障礙。為了后續(xù)操作的順利進行,需要對分片數(shù)據(jù)按照分片序號進行排序。由于分片數(shù)據(jù)中包含分片序號,因此根據(jù)分片數(shù)據(jù)中的分片序號即可對分片數(shù)據(jù)進行排序。
步驟408,將排序后的分片數(shù)據(jù)組裝成完整文件,將完整文件發(fā)送給客戶端。
本實施例中,將排序后的分片數(shù)據(jù)依次合并,組裝成原始的完整文件,再將該完整文件發(fā)送給客戶端,實現(xiàn)文件的下載。
在另一個實施例中,如圖5所示,上述文件傳輸方法還包括對文件進行下載的流程:
步驟502,接收客戶端發(fā)送的文件下載請求,文件下載請求攜帶請求下載文件的文件標識。
本實施例中,同樣的,客戶端將文件上傳到服務器后,還可通過客戶端對文件進行下載。具體的,客戶端可發(fā)起文件下載請求,服務器通過文件下載請求攜帶的請求下載文件的文件標識,可以從數(shù)據(jù)庫中查找出請求下載文件的所有數(shù)據(jù)分片??梢岳斫獾氖?,發(fā)起文件下載請求的客戶端可以是上傳文件的客戶端,也可以是非上傳文件的客戶端。
步驟504,以文件標識和分片序號為索引,從數(shù)據(jù)庫中查找出請求下載的文件對應的分片數(shù)據(jù)。
使用索引,可快速查找數(shù)據(jù)庫中的特定信息,在本實施例中,特定信息是請求下載的文件對應的分片數(shù)據(jù)。而根據(jù)文件標識和分片序號的兩級索引來查找請求下載的文件對應的分片數(shù)據(jù),可進一步提高查找速度。
步驟506,將請求下載的文件對應的分片數(shù)據(jù)發(fā)送給客戶端,以使客戶端根據(jù)分片數(shù)據(jù)的分片序號將所述分片數(shù)據(jù)組裝成完整文件。
服務器將從數(shù)據(jù)庫中查找出的請求下載的文件對應的所有分片數(shù)據(jù)發(fā)送給客戶端,由于分片數(shù)據(jù)包括總分片數(shù)和分片序號,客戶端可根據(jù)總分片數(shù)判斷分片數(shù)據(jù)是否全部接收,待分片數(shù)據(jù)全部接收,再根據(jù)分片序號對分片數(shù)據(jù)進行排序,將排序后的分片數(shù)據(jù)依次合并,組裝成原始的完整文件。
本實施例中,在客戶端實現(xiàn)文件重組,充分利用了客戶端的資源,最大限度的減少了服務器的資源消耗。
如圖6所示,在一個實施例中,還提供了一種文件傳輸裝置,該裝置包括:
分片數(shù)據(jù)接收模塊602,用于接收客戶端發(fā)送的將待發(fā)送文件按照預設大小分割后得到的多個分片數(shù)據(jù),分片數(shù)據(jù)包括分片信息和文件信息。
分片數(shù)據(jù)存儲模塊604,用于將分片數(shù)據(jù)存入到數(shù)據(jù)庫中。
在一個實施例中,分片信息包括分片序號,用于對分割后的分片數(shù)據(jù)進行順序編號,便于后續(xù)的文件重組處理和數(shù)據(jù)丟失的準確定位;文件信息包括文件標識、總分片數(shù)和文件名稱,文件標識用于唯一標識待發(fā)送文件,即通過文件標識,可找到與之對應的唯一的文件,總分片數(shù)用于記錄文件分割后得到的分片總數(shù),便于后續(xù)判斷分片數(shù)據(jù)接收的完整性,文件名稱和文件標識對應。
本實施例中,上述文件傳輸裝置還包括索引建立模塊706,用于對對數(shù)據(jù)庫中的分片序號和文件標識這兩個字段分別建立索引。
在另一個實施例中,如圖7所示,提供了另一種文件傳輸裝置,包括:
分片數(shù)據(jù)接收模塊602,用于接收客戶端發(fā)送的將待發(fā)送文件按照預設大小分割后得到的多個分片數(shù)據(jù),分片數(shù)據(jù)包括分片信息和文件信息。
分片數(shù)據(jù)存儲模塊604,用于將分片數(shù)據(jù)存入到數(shù)據(jù)庫中。
索引建立模塊706,用于對對數(shù)據(jù)庫中的分片序號和文件標識這兩個字段分別建立索引。
下載請求接收模塊708,用于接收客戶端發(fā)送的文件下載請求,文件下載請求攜帶請求下載文件的文件標識。
分片數(shù)據(jù)查找模塊710,用于以文件標識和分片序號為索引,從數(shù)據(jù)庫中查找出請求下載的文件對應的分片數(shù)據(jù)。
分片數(shù)據(jù)排序模塊712,用于將分片數(shù)據(jù)按照分片中的分片序號進行排序。
文件重組模塊714,用于將排序后的分片數(shù)據(jù)組裝成完整文件。
文件發(fā)送模塊716,用于將完整文件發(fā)送給所述客戶端。
在又一個實施例中,如圖8所示,提供了又一種文件傳輸裝置,包括:
分片數(shù)據(jù)接收模塊602,用于接收客戶端發(fā)送的將待發(fā)送文件按照預設大小分割后得到的多個分片數(shù)據(jù),分片數(shù)據(jù)包括分片信息和文件信息。
分片數(shù)據(jù)存儲模塊604,用于將分片數(shù)據(jù)存入到數(shù)據(jù)庫中。
索引建立模塊706,用于對對數(shù)據(jù)庫中的分片序號和文件標識這兩個字段分別建立索引。
下載請求接收模塊708,用于接收客戶端發(fā)送的文件下載請求,文件下載請求攜帶請求下載文件的文件標識。
分片數(shù)據(jù)查找模塊710,用于以文件標識和分片序號為索引,從數(shù)據(jù)庫中查找出請求下載的文件對應的分片數(shù)據(jù)。
分片數(shù)據(jù)發(fā)送模塊812,用于將請求下載的文件對應的分片數(shù)據(jù)發(fā)送給客戶端,以使客戶端根據(jù)所述分片數(shù)據(jù)的分片序號將所述分片數(shù)據(jù)組裝成完整文件。
本領域普通技術人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存儲記憶體(Random Access Memory,RAM)等。
以上所述實施例的各技術特征可以進行任意的組合,為使描述簡潔,未對上述實施例中的各個技術特征所有可能的組合都進行描述,然而,只要這些技術特征的組合不存在矛盾,都應當認為是本說明書記載的范圍。
以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對發(fā)明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應以所附權利要求為準。