本發(fā)明屬于數(shù)據(jù)管理技術(shù)領(lǐng)域,尤其涉及一種文件管理方法及裝置。
背景技術(shù):
在日常工作中,人們需要處理各種各樣的文檔文件。隨著信息科技的發(fā)展,企業(yè)內(nèi)部的文件一般都以電子文檔的形式存在。對于各大企業(yè)而言,這些電子文檔可能是商務合同、會議記錄、產(chǎn)品手冊、客戶資料、設(shè)計文檔、推廣文案、競爭對手資料、項目文檔、經(jīng)驗心得等。由于電子文檔數(shù)量之龐大,各大企業(yè)均引入了相應的文件管理系統(tǒng),以使企業(yè)員工能夠利用文件管理系統(tǒng),方便、高效地對這些電子文檔進行管理和存儲。
然而,對于保密性要求較高的企業(yè),如金融企業(yè),其內(nèi)部的大部分文件都是涉密的,具有極高的文件安全性要求。若不法分子想要從文件管理系統(tǒng)的后臺竊取文件時,則可以直接根據(jù)各文件的文件名,從大量文件中快速確認出哪些文件具有較高的可利用價值,從而迅速竊取。因此,現(xiàn)有的文件信息保密程度較低,文件的泄密風險較大。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例提供了一種文件管理方法及裝置,以解決現(xiàn)有文件管理系統(tǒng)中,文件信息保密程度較低,文件的泄密風險較大的問題。
本發(fā)明實施例的第一方面提供了一種文件管理方法,包括:
根據(jù)客戶端上傳的文件在上傳時的原始文件名,生成所述原始文件名對應的文件標識符;
將所述文件重命名為所述文件標識符,并將所述文件存儲于預設(shè)的存儲目錄;
將所述文件的所述文件標識符、所述原始文件名以及所述存儲目錄之間的映射關(guān)系存儲至數(shù)據(jù)庫;
當接收到客戶端發(fā)出的基于關(guān)鍵字的文件查詢指令時,在所述數(shù)據(jù)庫中查找與所述關(guān)鍵字關(guān)聯(lián)的原始文件名,并查找與該原始文件名具備所述映射關(guān)系的文件標識符及存儲目錄;
基于查找結(jié)果中的文件標識符與存儲目錄,在該存儲目錄下查找以該文件標識符命名的文件,并將查找到的文件及其對應的原始文件名作為查詢結(jié)果返回至客戶端。
本發(fā)明實施例的第二方面提供了一種文件管理裝置,包括:
生成單元,用于根據(jù)客戶端上傳的文件在上傳時的原始文件名,生成所述原始文件名對應的文件標識符;
重命名單元,用于將所述文件重命名為所述文件標識符,并將所述文件存儲于預設(shè)的存儲目錄;
存儲單元,用于將所述文件的所述文件標識符、所述原始文件名以及所述存儲目錄之間的映射關(guān)系存儲至數(shù)據(jù)庫;
查詢單元,用于當接收到客戶端發(fā)出的基于關(guān)鍵字的文件查詢指令時,在所述數(shù)據(jù)庫中查找與所述關(guān)鍵字關(guān)聯(lián)的原始文件名,并查找與該原始文件名具備所述映射關(guān)系的文件標識符及存儲目錄;
返回單元,用于基于查找結(jié)果中的文件標識符與存儲目錄,在該存儲目錄下查找以該文件標識符命名的文件,并將查找到的文件及其對應的原始文件名作為查詢結(jié)果返回至客戶端。
本發(fā)明實施例中,通過將文件重命名為與原始文件名對應的文件標識符,并將文件的文件標識符、原始文件名以及存儲目錄之間的映射關(guān)系存儲至數(shù)據(jù)庫,保證了不法分子想要從后臺竊取文件時,也無法直觀地從文件名中了解到各文件與開發(fā)項目之間的對應關(guān)系,難以從大量文件中快速確認出哪些文件具有較高的可利用價值,因此,降低了文件被迅速竊取的可能性,在一定程度上提高了文件信息的保密性。而在接收到客戶端發(fā)出的文件查詢指令時,通過在數(shù)據(jù)庫中獲取與文件查詢指令相關(guān)的原始文件名,保證了服務器能夠?qū)⒖蛻舳怂璧奈募捌鋵脑嘉募祷?,使得本系統(tǒng)在降低文件泄密程度的同時,能夠避免因服務器對文件的重命名而影響用戶正常使用的問題出現(xiàn)。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的文件管理方法的系統(tǒng)結(jié)構(gòu)圖;
圖2是本發(fā)明實施例提供的文件管理方法的實現(xiàn)流程圖;
圖3是本發(fā)明實施例提供的文件管理方法s205的具體實現(xiàn)流程圖;
圖4是本發(fā)明實施例提供的文件管理方法s301的具體實現(xiàn)流程圖;
圖5是本發(fā)明實施例提供的文件查找結(jié)果列表的示例圖;
圖6是本發(fā)明另一實施例提供的文件管理方法s205的具體實現(xiàn)流程圖;
圖7是本發(fā)明又一實施例提供的文件管理方法的實現(xiàn)流程圖;
圖8是本發(fā)明實施例提供的文件管理裝置的結(jié)構(gòu)框圖。
具體實施方式
以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、技術(shù)之類的具體細節(jié),以便透徹理解本發(fā)明實施例。然而,本領(lǐng)域的技術(shù)人員應當清楚,在沒有這些具體細節(jié)的其它實施例中也可以實現(xiàn)本發(fā)明。在其它情況中,省略對眾所周知的系統(tǒng)、裝置、電路以及方法的詳細說明,以免不必要的細節(jié)妨礙本發(fā)明的描述。
為了說明本發(fā)明所述的技術(shù)方案,下面通過具體實施例來進行說明。
圖1示出了本發(fā)明實施例提供的文件管理方法所適用的系統(tǒng)架構(gòu)圖,為了便于說明,僅示出了與本實施例相關(guān)的部分。
參照圖1,該系統(tǒng)由服務器11、數(shù)據(jù)庫12和多個客戶端13組成。其中,服務器11用于存儲各個文件,并對文件的文件名以及存儲目錄進行管理。具體地,服務器11根據(jù)其所存儲的文件的原始文件名,將以對應原始文件名的唯一文件標識號來重命名該文件,保證各個存儲目錄下不存在有包含原始文件名的文件。服務器11還用于將其存儲的各個文件的前后文件名以及存儲目錄存儲至數(shù)據(jù)庫12,以在需要對文件進行存儲目錄的定位時,請求數(shù)據(jù)庫12返回查詢結(jié)果。同時,服務器11還用于為客戶端13提供文件存儲、文件查詢以及文件下載服務,以使得客戶端13能夠根據(jù)響應結(jié)果選擇并瀏覽存儲于服務器11中的文件。
在該系統(tǒng)中,客戶端13可以為應用程序客戶端或者網(wǎng)頁客戶端,且運行在包括個人計算機、平板電腦或者手機等提供網(wǎng)絡接入功能的終端設(shè)備上,上述終端設(shè)備用于為客戶端13提供運行環(huán)境,并保證客戶端13與服務器11之間的通信。每個客戶端13都可以作為一個或者多個文件的上傳客戶端,同時也可以作為請求客戶端,向服務器11提交文件查詢請求,并根據(jù)服務器11返回的查詢結(jié)果,展示用戶所需的文件名列表以及展示用戶所需的一個或者多個文件的具體文件內(nèi)容。
圖2示出了本發(fā)明實施例提供的文件管理方法的實現(xiàn)流程,詳述如下:
s201:根據(jù)客戶端上傳的文件在上傳時的原始文件名,生成所述原始文件名對應的文件標識符。
在文件首次保存時,用戶會為文件命名。根據(jù)文件的命名規(guī)范,這些文件的文件名包含了對文件內(nèi)容以及文件對應項目進行描述的字符串,包括英文、中文、符號或者數(shù)字。在配置文件名時,該文件名為原始文件名。本地終端設(shè)備上的文件以其原始文件名來進行標識。
終端設(shè)備中的客戶端為用戶提供了各類功能控件,包括各類選取按鍵以及確認按鍵。
作為本發(fā)明的一個實施示例,在用戶需要對其本地文件進行集中存儲或者需要通過服務器將本地文件分享至其他用戶時,將點擊客戶端中的文件上傳按鍵,從而在彈出的本地文件選取窗口中,根據(jù)需要上傳的文件的本地存儲目錄查找出該文件后,選中該文件并點擊確認按鍵或上傳按鍵,以使客戶端將該文件上傳至服務器。
作為本發(fā)明的另一個實施示例,用戶在客戶端所提供的多個項目模板中,選取自身所需的一個項目模板后,在彈出的模板文件中輸入具體的文件內(nèi)容。在文件內(nèi)容輸入完畢時,用戶在文件名輸入框中鍵入自定義的文件名后,點擊終端界面中的保存按鈕,以使客戶端將該文件上傳至服務器。并且,在本地終端設(shè)備中,不對該文件進行存儲。
基于上述兩種實現(xiàn)方式,服務器接收到客戶端上傳的文件,且該文件的文件名為用戶自定義的文件名,即上述對文件內(nèi)容或者文件對應項目進行描述的字符串。在當前時刻,各文件的文件名即為上述原始文件名。
本發(fā)明實施例中,服務器讀取客戶端上傳的各個文件的原始文件名,并利用javajdk所提供的主鍵生成算法對各個文件的原始文件名分別進行處理,以分別生成全局唯一的文件標識符,即,生成的每一個文件標識符各不相同,在服務器中是唯一存在的。
本發(fā)明實施例中,文件標識符以一個十六位的數(shù)字形式組成。
例如,當接收到客戶端上傳的n個文件時,服務器將讀取出n個原始文件名。對于其中的每一個原始文件名,服務器將通過上述主鍵生成算法輸出相應的一個文件標識符。因此,對于n個文件,將輸出n個文件標識符。
s202:將所述文件重命名為所述文件標識符,并將所述文件存儲于預設(shè)的存儲目錄。
生成各個原始文件名分別對應的一個文件標識符后,服務器對每個文件的文件名進行更改,將原始文件名變更為每個原始文件名所對應的文件標識符。
例如,若一個文件的原始文件名為“保險系統(tǒng)開發(fā)項目”,服務器生成與“保險系統(tǒng)開發(fā)項目”對應的文件標識符為“1234567891234567”,則重命名后的該文件的文件名為“1234567891234567”。
服務器對文件的各原始文件名進行識別處理,以確定出各原始文件名對應的項目類型。服務器根據(jù)各原始文件名對應的項目類型,進入與項目類型匹配的存儲目錄,并將文件存儲于該存儲目錄下。
s203:將所述文件的所述文件標識符、所述原始文件名以及所述存儲目錄之間的映射關(guān)系存儲至數(shù)據(jù)庫。
服務器將每一個文件的文件標識符、原始文件名以及存儲目錄之間的映射關(guān)系傳輸至遠程的數(shù)據(jù)庫。
數(shù)據(jù)庫在預先建立的一張文件信息數(shù)據(jù)表中存儲每條記錄所描述的文件標識符、原始文件名以及存儲目錄。具體地,該文件信息數(shù)據(jù)表中包括文件標識符字段、原始文件名字段以及存儲目錄字段。當數(shù)據(jù)庫接收到每一個文件的文件標識符、原始文件名以及存儲目錄之間的映射關(guān)系時,將在該文件信息數(shù)據(jù)表中生成一條新的記錄,并將具有映射關(guān)系的文件標識符、原始文件名以及存儲目錄作為該條記錄對應于文件標識符字段、原始文件名字段以及存儲目錄字段的屬性值。
優(yōu)選地,若服務器接收到的客戶端上傳的文件為用戶通過預設(shè)的項目模板所上傳的文件,則服務器將識別出文件所對應的模板類型,并將每一個文件對應的模板類型與該文件所對應的文件標識符、原始文件名以及存儲目錄一并存儲至數(shù)據(jù)庫中。此時,數(shù)據(jù)庫的文件信息數(shù)據(jù)表中還包括模板類型字段,用以存儲與文件標識符、原始文件名以及存儲目錄對應的模板類型。
當服務器發(fā)送的基于某個文件的映射關(guān)系存儲至數(shù)據(jù)庫后,在接收到數(shù)據(jù)庫返回的存儲完成提示信息時,服務器將刪除本地所存儲的該條映射關(guān)系。因此,服務器在讀取到其存儲的該個文件的文件標識符時,無法從本地獲知該文件的原始文件名。
s204:當接收到客戶端發(fā)出的基于關(guān)鍵字的文件查詢指令時,在所述數(shù)據(jù)庫中查找與所述關(guān)鍵字關(guān)聯(lián)的原始文件名,并查找與該原始文件名具備所述映射關(guān)系的文件標識符及存儲目錄。
在用戶想要通過客戶端來查找服務器所存儲的文件時,在終端界面的文件查詢框中輸入關(guān)鍵字,此時,服務器將接收到客戶端發(fā)出的基于關(guān)鍵字的文件查詢指令,并根據(jù)該文件查詢指令,向數(shù)據(jù)庫發(fā)出攜帶關(guān)鍵字的文件名查詢請求。
一方面,數(shù)據(jù)庫在文件信息數(shù)據(jù)表的原始文件名字段下,查找出包含該關(guān)鍵字的各個原始文件名。另一方面,數(shù)據(jù)庫在文件信息數(shù)據(jù)表的模板類型字段下,查找出包含該關(guān)鍵字的各個模板類型后,根據(jù)模板類型與原始文件名的對應關(guān)系,確定出包含該關(guān)鍵字的各個模板類型所對應的原始文件名。
根據(jù)查找出的各原始文件名所對應的記錄,數(shù)據(jù)庫將每一條記錄返回至服務器,以使服務器確定出與這些原始文件名分別對應的文件標識符、存儲目錄以及模板類型。
s205:基于查找結(jié)果中的文件標識符與存儲目錄,在該存儲目錄下查找以該文件標識符命名的文件,并將查找到的文件及其對應的原始文件名作為查詢結(jié)果返回至客戶端。
基于接收到的每一條記錄,根據(jù)該記錄中文件標識符、原始文件名以及存儲目錄的映射關(guān)系,服務器在該存儲目錄中查找文件名為該文件標識符的一個文件后,將該文件及該文件的原始文件名返回至客戶端。
在終端界面所運行的客戶端中,以原始文件名展示接收到各個文件,因此,對于用戶而言,依然能夠在客戶端中根據(jù)原始文件名以及關(guān)鍵字來查找文件,并在文件查找結(jié)果列表中看到以原始文件名命名的各個文件。
本發(fā)明實施例中,通過將文件重命名為與原始文件名對應的文件標識符,并將文件的文件標識符、原始文件名以及存儲目錄之間的映射關(guān)系存儲至數(shù)據(jù)庫,保證了不法分子想要從后臺竊取文件時,也無法直觀地從文件名中了解到各文件與開發(fā)項目之間的對應關(guān)系,難以從大量文件中快速確認出哪些文件具有較高的可利用價值,因此,降低了文件被迅速竊取的可能性,在一定程度上提高了文件信息的保密性。而在接收到客戶端發(fā)出的文件查詢指令時,通過在數(shù)據(jù)庫中獲取與文件查詢指令相關(guān)的原始文件名,保證了服務器能夠?qū)⒖蛻舳怂璧奈募捌鋵脑嘉募祷?,使得本系統(tǒng)在降低文件泄密程度的同時,能夠避免因服務器對文件的重命名而影響用戶正常使用的問題出現(xiàn)。
通過將文件的文件標識符、原始文件名以及存儲目錄之間的映射關(guān)系存儲至數(shù)據(jù)庫的同一數(shù)據(jù)表中,在用戶檢索文件時,系統(tǒng)能夠從數(shù)據(jù)庫中快速確定出與關(guān)鍵字關(guān)聯(lián)的各個文件名,并能夠確定出各文件名對應的存儲目錄,因此,系統(tǒng)可以直接讀取存儲目錄下的文件后返回至客戶端,而無須逐一查找各文件目錄,也無須將對比匹配各文件目錄下的每個文件名后才能返回文件檢索結(jié)果。綜上,在文件存儲數(shù)量過大的情況下,本發(fā)明實施例提高了文件的檢索效率。
作為本發(fā)明的一個實施例,如圖3所示,上述s205具體包括:
s301:依照預設(shè)的分組規(guī)則,對查找出的各個文件進行分組,得到一個或多個文件組別。
分別在數(shù)據(jù)庫返回的每一條記錄所指示的存儲目錄下,查找以該存儲目錄對應的文件標識符命名的文件。當服務器接收到數(shù)據(jù)庫返回的m條記錄時,表示服務器存儲有m個與關(guān)鍵字關(guān)聯(lián)的文件。服務器從各個存儲目錄中分別查找出與關(guān)鍵字關(guān)聯(lián)的m個文件后,對m個文件進行分組處理。
分組的規(guī)則例如可以是,將首個拼音字母或首個英文字母相同的各個原始文件名所對應的各個文件作為一個文件組別;將存儲目錄屬于同一個二級存儲目錄的各個文件作為一個文件組別等。
優(yōu)選地,對初次分組完成后得到的各個文件組別,服務器重復執(zhí)行分組處理,以將具有相同特征的文件組別劃分為一個第二層文件組別,直至劃分出的各個文件組別互不具備相同特征時,停止執(zhí)行分組處理,并輸出包含一個或多個層級的各個根組。
例如,當服務器確定文件a與文件b屬于文件組別1,文件c與文件d屬于文件組別2、文件e屬于文件組別3以及文件f屬于文件組別4時,若文件別1和文件組別2均為代碼文件組別,則對得到的四個文件組別再次進行分組處理,確定出文件組別1和文件組別2屬于第一文件大組,確定出文件組別3和文件組別4依然屬于文件組別3和文件組別4。本示例中,第一文件大組、文件組別3以及文件大組4為上述根組。
作為本發(fā)明的一個實施例,如圖4所示,上述s301具體包括:
s401:獲取每個文件所分別對應的模板類型,所述每個文件所對應的模板類型與所述客戶端上傳該文件時所使用的一個項目模板對應。
由于數(shù)據(jù)庫返回的每一條記錄均中攜帶有模板類型,因此,服務器查找出上述m個文件后,根據(jù)m個文件分別對應的一條記錄,確定出每個文件對應的模板類型。
若客戶端上傳文件時沒有使用項目模板,則在數(shù)據(jù)庫返回的該文件所對應的記錄中,模板類型為空值。
s402:對查找出的各個文件進行分組,得到多個文件組別,其中,每個所述文件組別包含攜帶有相同所述模板類型的各個文件。
服務器將模板類型相同的各個文件劃分至同一文件組別中。例如,若服務器查找出的文件包括文件a、文件b、文件c以及文件d,各文件對應的模板類型分別為“月度考核”、“月度考核”、“新產(chǎn)品再保方案”以及空值,則服務器將文件a以及文件b劃分為一個文件組別,文件c為第二個文件組別,文件d為第三個文件組別。
本發(fā)明實施例未提到的步驟實現(xiàn)原理與本發(fā)明其他實施例中的步驟實現(xiàn)原理相同,因此不一一贅述。
s302:生成每個所述文件組別分別對應的虛擬文件夾。
本發(fā)明實施例中,服務器為每一個文件組別生成一個虛擬文件夾,該虛擬文件夾包括唯一識別的文件夾名。其中,若文件組別包括上述多次分組操作后的多層文件組別,每一層文件組別同樣生成對應的一個虛擬子文件夾。
當文件組別的分組規(guī)則為依照模板類型分組時,每一個文件組別所對應的虛擬文件夾的文件夾名為該模板類型。
服務器將每一個文件組別中的各個文件與該文件組別所對應的各層虛擬文件夾進行綁定。
s303:將所述虛擬文件夾、查找到的文件及其對應的原始文件名作為查詢結(jié)果返回至客戶端,以使所述客戶端分別展示每一所述虛擬文件夾,并在每一所述虛擬文件夾下分文件組別地分別展示以原始文件名命名的各個文件。
對于服務器所查找出的上述m個文件中的每一個文件,服務器從數(shù)據(jù)庫返回的記錄中確定該文件的原始文件名,并將該文件、該文件的原始文件名以及該文件對應的各層虛擬文件夾返回至客戶端。
客戶端在文件查找結(jié)果列表中,生成各個虛擬文件夾。若服務器返回的虛擬文件夾中包含虛擬子文件夾,則客戶端依次該虛擬子文件夾的層級關(guān)系,在虛擬文件夾中展示相應的虛擬子文件夾。
作為本發(fā)明的一個實施示例,圖5示出了客戶端所展示的一個文件查找結(jié)果列表。在該圖中,每層虛擬文件夾以一個文件夾圖標表示,且虛擬文件夾的名稱為服務器生成該虛擬文件夾時所同時產(chǎn)生的名稱。
本發(fā)明實施例中,對查找出的各個文件進行分組,并生成每個分組對應的虛擬文件夾,使得客戶端能夠在服務器返回的虛擬文件夾中展示用戶查詢的各個文件。在客戶端所展示的虛擬文件夾中,用戶可以查看以原始文件名表示的文件,但由于其看到的文件夾是虛擬生存的,因此用戶自身也無法知道文件在服務器中的實際存儲目錄,提高了文件的安全性以及保密性。而對于從服務器后臺竊取文件的不法分子,由于其不知道文件標識號與原始文件名的對應關(guān)系,且也無法在客戶端的虛擬文件夾中查看各個原始文件名,故只能竊取到以文件標識號命名的文件,因此在一定程度也提高了服務器所存儲的文件的保密性。
作為本發(fā)明的另一個實施例,如圖6所示,上述s205包括s601至s603,具體如下:
s601:獲取所述查詢結(jié)果中,每一原始文件名對應的標志位。
本發(fā)明實施例中,文件信息數(shù)據(jù)表除了原始文件名字段、文件標識符字段、存儲目錄字段以及模板類型字段外,還包括標志位字段。該標志位字段對應的屬性值可以是第一標志或第二標志。默認狀態(tài)下,標志位字段對應的屬性值為第二標志。
若用戶在某一次文件處理過程中,通過客戶端選取了某一文件并執(zhí)行刪除操作,則客戶端將包含原始文件名的文件刪除請求發(fā)送至服務器。服務器向數(shù)據(jù)庫發(fā)出存儲目錄查詢請求,該存儲目錄查詢請求包含有該原始文件名以及文件刪除標記。根據(jù)數(shù)據(jù)庫返回的查詢結(jié)果,服務器獲取該原始文件名對應的存儲目錄,從而在該存儲目錄查找出該文件后,執(zhí)行文件移除。
在上述過程中,在數(shù)據(jù)庫接收到包含有該原始文件名以及文件刪除標記的存儲目錄查詢請求時,在數(shù)據(jù)表中將該原始文件名所對應的標志位設(shè)置為第一標志。
當服務器接收到客戶端發(fā)出的基于關(guān)鍵字的文件查詢指令時,數(shù)據(jù)庫查詢出與該關(guān)鍵字關(guān)聯(lián)的各個原始文件名,并將各原始文件名及其對應的各字段屬性值返回至服務器。其中,各字段屬性值包括原始文件名對應的標志位字段屬性值。
s602:若所述標志位為第一標志,則將所述原始文件名以及所述第一標志返回至所述客戶端,以使所述客戶端展示以所述原始文件名命名的虛擬文件圖標,并使所述客戶端以對應所述第一標志的色彩標記所述虛擬文件圖標。
當服務器識別出其接收到的原始文件名所對應的標志位為第一標志時,將確定該原始文件名所對應的文件已刪除,并將該原始文件名及其標志位直接返回至客戶端。
客戶端接收到包含第一標志以及包含原始文件名的文件查詢結(jié)果信息時,在文件查詢結(jié)果列表中生成以該原始文件名命名的虛擬文件圖標,且該虛擬文件圖標的色彩為第一標志對應的色彩。
s603:若所述標志位為第二標志,則基于查找結(jié)果中的文件標識符與存儲目錄,在該存儲目錄下查找以該文件標識符命名的文件,并將查找到的文件及其對應的原始文件名作為查詢結(jié)果返回至客戶端。
當服務器識別出其接收到的原始文件名所對應的標志位為第二標志時,將確定該原始文件名所對應的文件存儲于其對應的存儲目錄之下,從而以上述實施例中的查找原理查找到該原始文件名對應的文件后,并將該文件及其對應的原始文件名返回至客戶端,以使所述客戶端展示以原始文件名命名的所述文件。
本發(fā)明實施例中,服務器通過識別數(shù)據(jù)庫返回的原始文件名所對應的標志位,在標志位為第一標志時,可以避免服務器到存儲目錄之下查找實際已不存在的文件,提高了服務器的處理效率。通過將對應第一標志的原始文件名發(fā)送至客戶端,使得客戶端能夠以與第一標志匹配的色彩標記虛擬文件圖標,提醒用戶該文件已無法查看以及下載,同時能夠提醒系統(tǒng)管理員確認該文件是否被異常刪除以及是否需要重新上傳該文件,因此,本發(fā)明實施例提供的文件管理方法提高了文檔存儲的可靠性。
作為本發(fā)明的又一實施例,如圖7所示,在上述s205之后,所示文件管理方法還包括:
s206:當接收到文件同步指令時,將所述服務器中的所述文件同步至備份服務器。
本發(fā)明實施例中,當接收到外部設(shè)備所下發(fā)的文件同步信息時,服務器則接收到上述文件同步指令。其中,該外部設(shè)備以及服務器通過網(wǎng)絡相連,服務器與備份服務器通過網(wǎng)絡相連。除了上述文件同步指令接收方式之外,服務器所接收到的文件同步指令也可由客戶端發(fā)出。
在接收到文件同步指令時,服務器將其存儲的各個文件依次傳輸至備份服務器中,以在備份服務器中存儲相同的各個文件,且各個文件在備份服務器中的存儲目錄與各個文件在服務器中的存儲目錄相同,備份服務器中各文件的文件名也為文件標識符。
s207:獲取所述備份服務器發(fā)出的資源列表,所述資源列表包括已同步文件的文件標識符。
當服務器檢測到其存儲的最后一個文件已傳輸完畢后,向備份服務器發(fā)出資源列表讀取請求,以接收來自備份服務器的資源列表。其中,資源列表包括備份服務器中已存儲的所有文件的文件標識符。
服務器接收到資源列表后,向數(shù)據(jù)庫發(fā)出文件標識符獲取請求,以請求獲取該服務器所對應的數(shù)據(jù)表中的各個文件標識符。此后,服務器根據(jù)其接收到的文件標識符,依照文件標識符的排列順序,讀取出第一個文件標識符,并將該文件標識符分別與資源列表中的所有文件標識符進行比較,以確定資源列表中是否存在相同的該文件標識符。
s208:若所述數(shù)據(jù)庫中任一所述文件的文件標識符不存在于所述資源列表,則緩存該文件標識符。
對于服務器在一次對比操作中所讀取的一個文件標識符,若服務器遍歷資源列表中的各個文件標識符后,資源列表中依然不存在該個文件標識符,則確定為備份服務器中不存在該文件標識符對應的文件,即該文件同步失敗。此時,服務器緩存該文件標識符后,再從數(shù)據(jù)庫所返回的數(shù)據(jù)中讀取下一個文件標識符,以執(zhí)行將該文件標識符分別與資源列表中的所有文件標識符進行比較。循環(huán)迭代,直至服務器從數(shù)據(jù)表中所獲取到的各個文件標識符均比較完備。
s209:從所述數(shù)據(jù)庫中獲取緩存的各個文件標識符所分別對應的存儲目錄,并在獲取到的各存儲目錄中分別查找以各文件標識符命名的文件后,重新將查找到的各文件同步至所述備份數(shù)據(jù)庫。
在服務器從數(shù)據(jù)表中所獲取到的各個文件標識符均與資源列表中的各個文件標識符比較完備后,服務器向數(shù)據(jù)庫發(fā)出存儲目錄獲取請求,該請求中攜帶有服務器緩存的所有文件標識符,以使數(shù)據(jù)庫查詢并返回這些文件標識符所分別對應的各個存儲目錄。
服務器從緩存的各個文件標識符所分別對應的存儲目錄中查找出相應的各個文件后,再次將這些文件同步至備份服務器。并返回執(zhí)行s207,直至備份服務器的資源列表中包含服務器在數(shù)據(jù)庫所對應的數(shù)據(jù)表中的每一個文件標識符時,停止同步。
本發(fā)明實施例中,通過判斷數(shù)據(jù)庫中所存儲的各個文件標識符是否存在備份服務器的資源列表中,可確定出在文件備份或遷移的過程中,哪些文件出現(xiàn)備份、遷移失敗的問題,降低了管理員對丟失文件的排查難度;通過再次同步資源列表中所不存在的文件標識符所對應的文件,保證了每一個文件都能正確完成同步。
應理解,上述實施例中各步驟的序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應以其功能和內(nèi)在邏輯確定,而不應對本發(fā)明實施例的實施過程構(gòu)成任何限定。
對應于上文實施例所述的文件管理方法,圖8示出了本發(fā)明實施例提供的文件管理裝置的結(jié)構(gòu)框圖,為了便于說明,僅示出了與本發(fā)明實施例相關(guān)的部分。
參照圖8,該文件管理裝置81包括:
生成單元811,用于根據(jù)客戶端上傳的文件在上傳時的原始文件名,生成所述原始文件名對應的文件標識符。
重命名單元812,用于將所述文件重命名為所述文件標識符,并將所述文件存儲于預設(shè)的存儲目錄。
存儲單元813,用于將所述文件的所述文件標識符、所述原始文件名以及所述存儲目錄之間的映射關(guān)系存儲至數(shù)據(jù)庫。
查詢單元814,用于當接收到客戶端發(fā)出的基于關(guān)鍵字的文件查詢指令時,在所述數(shù)據(jù)庫中查找與所述關(guān)鍵字關(guān)聯(lián)的原始文件名,并查找與該原始文件名具備所述映射關(guān)系的文件標識符及存儲目錄。
返回單元815,用于基于查找結(jié)果中的文件標識符與存儲目錄,在該存儲目錄下查找以該文件標識符命名的文件,并將查找到的文件及其對應的原始文件名作為查詢結(jié)果返回至客戶端。
可選地,所述返回單元815包括:
分組子單元,用于依照預設(shè)的分組規(guī)則,對查找出的各個文件進行分組,得到一個或多個文件組別。
生成子單元,用于生成每個所述文件組別分別對應的虛擬文件夾。
返回子單元,用于將所述虛擬文件夾、查找到的文件及其對應的原始文件名作為查詢結(jié)果返回至客戶端,以使所述客戶端分別展示每一所述虛擬文件夾,并在每一所述虛擬文件夾下分文件組別地分別展示以原始文件名命名的各個文件。
可選地,所述分組子單元具體用于:
獲取每個文件所分別對應的模板類型,所述每個文件所對應的模板類型與所述客戶端上傳該文件時所使用的一個項目模板對應;
對查找出的各個文件進行分組,得到多個文件組別,其中,每個所述文件組別包含攜帶有相同所述模板類型的各個文件。
可選地,所述存儲單元813具體用于:
將所述文件的所述文件標識符、所述原始文件名以及所述存儲目錄之間的映射關(guān)系存儲至數(shù)據(jù)庫所預先建立的文件信息數(shù)據(jù)表中;
所述查詢單元814具體用于:
當接收到客戶端發(fā)出的基于關(guān)鍵字的文件查詢指令時,在所述文件信息數(shù)據(jù)表中查找與所述關(guān)鍵字關(guān)聯(lián)的原始文件名,并查找與該原始文件名具備所述映射關(guān)系的文件標識符及存儲目錄。
可選地,該文件管理裝置81還包括:
同步單元,用于當接收到文件同步指令時,將所述服務器中的所述文件同步至備份服務器。
獲取單元,用于獲取所述備份服務器發(fā)出的資源列表,所述資源列表包括已同步文件的文件標識符。
緩存單元,用于若所述數(shù)據(jù)庫中任一所述文件的文件標識符不存在于所述資源列表,則緩存該文件標識符。
二次同步單元,用于從所述數(shù)據(jù)庫中獲取緩存的各個文件標識符所分別對應的存儲目錄,并在獲取到的各存儲目錄中分別查找以各文件標識符命名的文件后,重新將查找到的各文件同步至所述備份數(shù)據(jù)庫。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,僅以上述各功能單元、模塊的劃分進行舉例說明,實際應用中,可以根據(jù)需要而將上述功能分配由不同的功能單元、模塊完成,即將所述裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能單元或模塊,以完成以上描述的全部或者部分功能。實施例中的各功能單元、模塊可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中,上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。另外,各功能單元、模塊的具體名稱也只是為了便于相互區(qū)分,并不用于限制本申請的保護范圍。上述系統(tǒng)中單元、模塊的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應認為超出本發(fā)明的范圍。
在本發(fā)明所提供的實施例中,應該理解到,所揭露的裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的系統(tǒng)實施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通訊連接可以是通過一些接口,裝置或單元的間接耦合或通訊連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明實施例的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務器,或者網(wǎng)絡設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明實施例各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍,均應包含在本發(fā)明的保護范圍之內(nèi)。