一種文件傳輸方法和設備的制造方法
【技術領域】
[0001] 本發明的實施方式涉及文件傳輸的技術領域,更具體地,涉及大文件的斷點續傳。
【背景技術】
[0002] 在大多數的互聯網應用中,大文件傳輸的客戶端與服務器的傳輸模式大致包括如 下步驟:
[0003] (1)客戶端發送上傳文件請求,包含一個唯一的上傳標識符UploadID,文件總長 度length、上次文件上傳中斷后的位置off set、文件摘要(比如,MD5摘要)等參數。其中, 在客戶端第一次發送上傳文件請求時,可以不發送該上次文件上傳中斷后的位置offset, 但通常是發送為零值的offset。
[0004] (2)服務端收到上傳文件請求后,檢查offset參數與本地已上傳的文件內容長度 是否一致。如果不一致,通知客戶端文件續傳的斷點錯誤。
[0005] (3)客戶端開始按文件內容的字節順序傳輸數據。
[0006] (4)文件傳輸完畢后,服務端檢查上傳的文件總長度與請求時的傳入文件總長度 length參數是否一致(長度校驗),服務端重新讀取一次已上傳文件內容,計算文件摘要, 并與請求時傳入的文件摘要參數比較是否一致(內容校驗)。如果有加密、壓縮等的需求 時,需要再對磁盤進行一次讀寫操作,生成新的加密、壓縮后的文件,刪掉上傳的明文文件。
[0007] 可見,在上面的文件上傳流程中,在數據傳輸完畢后,服務端需要至少兩次執行對 底層文件存儲系統(磁盤)的讀和/或寫操作,一次是計算摘要進行數據內容校驗,一次是 加密、壓縮產生的讀寫操作。
【發明內容】
[0008] 有鑒于此,本發明實施方式的目的之一旨在使得在大文件上傳時對底層文件存儲 系統的讀寫操作得以減少。
[0009] 根據本發明的一個方面,提供一種文件傳輸方法。該方法包括:接收按文件內容的 字節順序上傳的數據,每當接收到預定大小的數據塊時,調用文件傳輸實例對所接收的數 據塊執行一種或多種處理,并且將所述一種或多種處理的處理結果記錄在文件傳輸實例包 括的變量中;以及在文件傳輸中斷后,對所述文件傳輸實例執行序列化操作而進行存儲。所 述處理結果針對所述一種或多種處理中的不同的處理包括以下各項中的一種或多種:所述 文件的已傳輸部分的摘要值、所述文件的已傳輸的字節總數和所述文件的經處理后的字節 總數。
[0010] 根據本發明的實施方式,所述一種或多種處理包括針對所述文件執行的摘要計 算、加密處理、壓縮處理或者其組合,所述文件傳輸實例包括用于執行所述一種或多種處理 的一個或多個接口。
[0011] 根據本發明的實施方式,所述摘要計算使用的摘要算法包括MD5、SHAl和SHA512 中的一種或多種,所述加密處理的加密算法包括AES、DES、3DES、IDEA和RSA中的一種或多 種,所述壓縮處理使用的壓縮算法包括Def late和Zip中的一種或多種。
[0012] 進一步地,該方法還包括:在接收到傳輸中斷后續傳的所述文件的內容時,對存儲 的所述文件傳輸實例執行反序列化操作,調用反序列化操作后的所述文件傳輸實例對所接 收的所述預定大小的數據塊執行所述一種或多種處理。
[0013] 進一步地,該方法還包括:周期性地或者每接收到預定數量的數據,對所述文件傳 輸實例執行序列化操作而進行存儲。
[0014] 進一步地,該方法還包括:在確定所述文件是首次上傳時,創建所述文件傳輸實 例;和/或在確定所述文件上傳完畢時,刪除所述文件傳輸實例。
[0015] 進一步地,將所述文件傳輸實例存儲在NOSQL數據庫中。
[0016] 根據本發明的另一個方面,提供一種文件傳輸設備。該設備包括:接收和處理裝 置,用于接收按文件內容的字節順序上傳的數據,每當接收到預定大小的數據塊時,調用文 件傳輸實例對所接收的數據塊執行一種或多種處理,將所述一種或多種處理的處理結果記 錄在文件傳輸實例包括的變量中;以及文件斷點保存裝置,用于在文件傳輸中斷后,對所述 文件傳輸實例執行序列化操作而進行存儲。所述處理結果針對所述一種或多種處理中的不 同的處理包括以下各項中的一種或多種:所述文件的已傳輸部分的摘要值、所述文件的已 傳輸的字節總數和所述文件的已處理的字節總數。
[0017] 根據本發明的又一個方面,提供一種在計算機可讀存儲介質中實現的計算機程序 產品,所述計算機可讀存儲介質具有存儲于其中的計算機可讀程序代碼部分,所述計算機 可讀程序代碼部分被配置為執行根據前述方法。
[0018] 根據本發明實施方式的技術方案,能夠支持對文件的斷點續傳,并提供對文件內 容的加密、壓縮、文件長度及摘要校驗支持等各種處理,但減少了對底層文件系統(磁盤) 的讀寫操作。
[0019] 從下文結合附圖所做出的詳細描述中,本發明的這些和其他優點和特征將變得明 顯,其中在整個下文描述的若干附圖中,類似的元件將具有類似的編號。
【附圖說明】
[0020] 圖1圖示根據本發明的實施方式的文件傳輸方法的流程圖;
[0021] 圖2圖示根據本發明的一個具體實施例的文件傳輸方法的流程圖;以及
[0022] 圖3圖示根據本發明的實施方式的文件傳輸設備的框圖。
【具體實施方式】
[0023] 下文將參考附圖更完整地描述本公開內容,其中在附圖中顯示了本公開內容的實 施方式。但是這些實施方式可以用許多不同形式來實現并且不應該被解釋為限于本文所述 的實施方式。相反地,提供這些實例以使得本公開內容將是透徹和完整的,并且將全面地向 本領域的熟練技術人員表達本公開內容的范圍。
[0024] 下面結合附圖以示例的方式詳細描述本發明的各種實施方式。
[0025] 參考圖1,其示出了根據本發明的實施方式的文件傳輸方法100的流程圖。應當理 解,圖1中以虛線框示出的步驟為本發明實施方式的可選步驟,僅在部分實施方式出現。
[0026] 在步驟S110,創建文件傳輸實例。文件傳輸實例可以一個或多個變量,變量用于存 儲各種處理的中間結果或者可以表示文件的傳輸進度的信息。中間結果例如可以是文件的 已上傳部分的摘要或者對于文件后續內容的處理有用的其他信息。可選地,文件傳輸實例 還可以包括一個或多個接口,接口用于對接收到的文件執行各種可能的處理,并且將處理 后的文件寫入到文件存儲系統(磁盤)中。
[0027] 可以在某個文件被確定是首次開始傳輸時,創建針對該文件的文件傳輸實例。備 選地,也可以在預先創建文件傳輸實例。
[0028] 在步驟S120,接收按文件內容的字節順序上傳的數據,每當接收到預定大小的數 據塊時,調用文件傳輸實例對所接收的數據塊執行一種或多種處理,并且將所述一種或多 種處理的處理結果記錄在文件傳輸實例包括的變量中。此時,文件傳輸實例駐留在內存中。 文件傳輸實例可以包括對數據塊執行各種處理的各種接口,也可以包括指向外部處理接口 的指針變量。
[0029] 處理結果針對一種或多種處理中的不同的處理可以包括文件的已傳輸部分的摘 要值。該摘要值可以由文件傳輸實例中之前所包括的摘要變量值(對應于在該數據塊之前 該文件的已經接收部分的摘要)與所接收的數據塊進行摘要計算的結果而得出,并更新文 件傳輸實例中的摘要值。在所處理的數據塊是文件的第一個上傳的數據塊時,可以理解為 文件傳輸實例之前所包括的摘要變量值為零,則利用所述數據塊的摘要值來更新所述文件 傳輸實例的摘要變量值,即文件的已傳輸部分的摘要值。
[0030] 附加地,處理結果針對一種或多種處理中的不同的處理還可以包括文件的已傳輸 的字節總數(表示文件的已傳輸部分的長度)、和/或文件的已處理的字節總數(表示文件 的已處理部分的長度)。
[0031] 在步驟S130,在文件傳輸中斷后,對文件傳輸實例執行序列化操作而進行存儲。
[0032] 在步驟S140,在接收到傳輸中斷后續傳的文件的內容部分時,可以跳轉到步驟 120繼續執行。
[0033] 例如,可以從