FM 是在 MIT 許可下發布的開源文件管理器。它是 elfinder 或 CKFinder 的替代品。
重要資訊:此軟體包已棄用。
現在,請使用具有許多新功能和改進的RichFileManager套件。
文件管理器擁有免費許可證。如果您想支持 filemanager 的開發或只是透過支付啤酒來感謝其主要維護者,您可以透過點擊以下按鈕進行捐贈:
Filemanager 在 wiki 頁面上有詳細記錄。 API,請見下文。
前言
由於最近進行了許多更改,現在僅 PHP 和 MVC 連接器可用。您可以嘗試其他連接器的最新版本,但不保證它們實現所有功能並正常工作。
若要使用其他連接器,請從 https://github.com/simogeo/Filemanager/archive/v0.8.zip 下載 v0.8 版本(提供 PHP、ASHX、ASP、CFM、lasso、PL 和 JSP 連接器)
JSP/Java 連接器實作位於:https://github.com/th-schwarz/C5Connector.Java
(1)使用 Git 從儲存庫檢視 FileManager 的副本:
git 克隆 http://github.com/simogeo/Filemanager.git
或從 Github 下載檔案:https://github.com/simogeo/Filemanager/archive/master.zip
您可以將 FileManager 放置在 Web 服務根目錄中的任何位置。
(2)複製預設設定檔(位於腳本目錄中的“filemanager.config.default.json”),刪除檔案名稱末尾的“.default”,並根據下列 wiki 編輯選項頁面:https://github.com/ simogeo/Filemanager/wiki/Filemanager-configuration-file 查看設定案例研究可能對您也有幫助:https://github.com/simogeo/Filemanager/wiki/Specify -使用者資料夾%2C-設定案例
(3a)如果您要將 FileManager 與 FCKEditor 集成,請開啟 fckconfig.js 檔案並找到指定用於圖像、連結等的檔案瀏覽器的行。您將需要更改如下行:
FCKConfig . ImageBrowser = false ;
FCKConfig . ImageBrowserURL = FCKConfig . BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
……對此:
FCKConfig . ImageBrowser = true ;
FCKConfig . ImageBrowserURL = '[Path to Filemanager]/index.html' ;
(3b)如果您要將 FileManager 與 CKEditor 3.x 或更高版本集成,只需在配置實例時設定 URL,如下所示:
CKEDITOR . replace ( 'instancename' , {
filebrowserBrowseUrl : '[Path to Filemanager]/index.html' ,
... other configuration options . . .
} ) ;
如果您想使用模態對話方塊模式(而不是彈出),請參考專用的wiki頁面。
(3c)如果您將 FileManager 與 TinyMCE (>= 3.0) 集成,您應該:
建立一個Javascript 回呼函數,該函數將開啟FileManager index.html 基本頁面(請參閱下面的URL 作為範例) 在tinyMCE.init 指令中新增下列一行:「file_browser_callback : 'name_of_callback_function'」 請參閱http://www. tinymce.com /wiki.php/TinyMCE3x:How-to_implement_a_custom_file_browser 以了解更多詳細資訊。
另請參閱專用 wiki 頁面,其中包含 TinyMCE 4 範例:https://github.com/simogeo/Filemanager/wiki/How-to-use-the-Filemanager-with-tinyMCE-3-or-4
(4)最後但同樣重要的是,擔心安全!
對於PHP 連接器:將/connectors/php/default.config.php
複製/貼上到/connectors/php/user.config.php
以定義您自己的驗證函數。為此,您可以在專門的 wiki 頁面上找到一個範例。
jQuery 依賴性和相容性
我們嘗試定期更新 jQuery 核心庫。如果出於任何原因,您現在無法使用嵌入的 jQuery 版本,那麼 Filemanager 可能會使用 >= 1.6 的 jQuery 版本。您必須使用 jQuery.migrate() 外掛才能將其與 jQuery 1.9+ 版本一起使用。
重要提示:Filemanager 設計為無需任何特殊配置即可工作,但在沒有任何配置的情況下使用它是非常不安全的。請根據預設檔案並參考專用wiki頁面設定您自己的身份驗證功能。
您可以按照這個簡單的 API 為您選擇的伺服器端語言建立連接器。您必須在以下位置有一個腳本,該腳本可以透過傳回適當的 JSON 物件來回應 HTTP GET 請求:
[path to FileManager]/connectors/[language extension]/filemanager.[language extension]
FileManager 目前在以下位置包含適用於 PHP、MVC、JSP、lasso、ASP、ASHX、PL 和 CFM 的連接器:
PHP: .../connectors/php/filemanager.php
ASP.NET MVC Framework .../connectors/mvc/FilemanagerController.cs
JSP: .../connectors/jsp/filemanager.jsp
lasso: .../connectors/lasso/filemanager.lasso
ASP: .../connectors/asp/filemanager.asp
ASHX: .../connectors/ashx/filemanager.asp
PL: .../connectors/pl/filemanager.pl
CFM: .../connectors/cfm/filemanager.cfm
只要此位置存在用於回應請求的腳本,您就可以按照您認為合適的方式拆分程式碼(外部程式庫、設定檔等)。
每個回應都應包含兩個特定於錯誤處理的鍵:錯誤和代碼。如果您的腳本中出現錯誤,您可以使用您認為最合適的任何值填充這些鍵。如果沒有錯誤,Error 應保持為空或 null,Code 應為空、null 或零 (0)。不要對任何實際錯誤使用零。如果連接器使用外部文件進行配置(建議),但找不到該文件,則以下範例將是適當的回應:
{
"Error" : " Configuration file missing. " ,
"Code" : -1
}
您的腳本應包含對以下方法/函數的支援。來自 FileManager 的 GET 請求包含一個參數“mode”,該參數指示要傳回的回應類型。其他參數將提供完成請求所需的其他信息,例如當前目錄。
getinfo
方法傳回有關單一檔案的資訊。模式為“getinfo”的請求將包含一個附加參數“path”,指示要檢查哪個檔案。布林參數「getsize」指示是否應傳回檔案(如果是影像)的尺寸。
請求範例:
[path to connector]?mode=getinfo&path=/UserFiles/Image/logo.png&getsize=true
回應範例:
{
"Path" : " /UserFiles/Image/logo.png " ,
"Filename" : " logo.png " ,
"File Type" : " png " ,
"Preview" : " /UserFiles/Image/logo.png " ,
"Protected" : 0 ,
"Properties" : {
"Date Created" : null ,
"Date Modified" : " 02/09/2007 14:01:06 " ,
"filemtime" : 1360237058 ,
"Height" : 14 ,
"Width" : 14 ,
"Size" : 384
},
"Error" : " " ,
"Code" : 0
}
按鍵如下:
Path: The path to the file. Should match what was passed in the request.
Filename: The name of the file, i.e., the last part of the path.
File Type: The file extension, "dir" if a directory, or "txt" if missing/unknown.
Preview: Path to a preview image. If the file is an image that can be displayed in a web browser (i.e., gif, jpg, or png), you should return the path to the image. Otherwise, check to see if there is a matching file icon based on the file extension, constructing the path like so:
Directories: images/fileicons/_Open.png
Files: images/fileicons/[extension].png
Unknown: images/fileicons/default.png
Protected: Indicates if the file has some reading / writing restrictions. If not, set to 0. Else set to 1.
Properties: A nested JSON object containing specific properties of the file.
Date Created: The file's creation date, if available.
Date Modified: The file's modification date, if available.
Height: If an image, the height in pixels.
Width: If an image, the width in pixels.
Size: The file size in bytes.
Capabilities (optional): You can limit the operation buttons shown for a specific file. It is an array containing ['select','delete','rename','download'] (for all capabilities), or [] (for no capabilities). If not present, all capabilities are enabled.
Error: An error message, or empty/null if there was no error.
Code: An error code, or 0 if there was no error.
getfolder
方法傳回表示給定目錄內容(由「path」參數指示)的檔案和資料夾物件的陣列。它應該呼叫 getinfo 方法來檢索每個檔案的屬性。布林參數「getsizes」指示是否應為每個項目傳回影像尺寸。資料夾應始終在文件之前返回。 (可選)可以指定“type”參數來限制傳回的檔案(取決於連接器)。如果為主index.html URL 指定了「type」參數,則相同的參數值將被重複使用並傳遞給getfolder。例如,這可以用於僅顯示檔案系統樹中的圖像檔案。
請求範例:
[path to connector]?mode=getfolder&path=/UserFiles/Image/&getsizes=true&type=images
回應範例:
{
"/UserFiles/Image/logo.png" : {
"Path" : " /UserFiles/Image/logo.png " ,
"Filename" : " logo.png " ,
"File Type" : " png " ,
"Preview" : " /UserFiles/Image/logo.png " ,
"Protected" : 0 ,
"Properties" : {
"Date Created" : null ,
"Date Modified" : " 02/09/2007 14:01:06 " ,
"filemtime" : 1360237058 ,
"Height" : 14 ,
"Width" : 14 ,
"Size" : 384
},
"Error" : " " ,
"Code" : 0
},
"/UserFiles/Image/icon.png" : {
"Path" : " /UserFiles/Image/icon.png " ,
"Filename" : " icon.png " ,
"File Type" : " png " ,
"Preview" : " /UserFiles/Image/icon.png " ,
"Properties" : {
"Date Created" : null ,
"Date Modified" : " 02/09/2007 14:01:06 " ,
"filemtime" : 1360237058 ,
"Height" : 14 ,
"Width" : 14 ,
"Size" : 384
},
"Error" : " " ,
"Code" : 0
},
"/UserFiles/folder/" :{
"Path" : " /UserFiles/folder/ " ,
"Filename" : " folder " ,
"File Type" : " dir " ,
"Preview" : " images / fileicons / _Open.png " ,
"Properties" : {
"Date Created" : null ,
"Date Modified" : " 02/09/2007 14:01:06 " ,
"filemtime" : 1360237058 ,
"Height" : null ,
"Width" : null ,
"Size" : null
},
"Error" : " " ,
"Code" : 0
}
}
陣列中的每個鍵都是單一項目的路徑,值是該項目的檔案物件。
rename
方法使用「new」參數中給出的名稱重新命名「old」參數中給出的路徑處的項目,並傳回指示該操作結果的物件。
請求範例:
[path to connector]?mode=rename&old=/UserFiles/Image/logo.png&new=id.png
回應範例:
{
"Error" : " No error " ,
"Code" : 0 ,
"Old Path" : " /a_folder_renamed/thisisareallylongincrediblylongfilenamefortesting.txt " ,
"Old Name" : " thisisareallylongincrediblylongfilenamefortesting.txt " ,
"New Path" : " /a_folder_renamed/a_renamed_file " ,
"New Name" : " a_renamed_file "
}
move
方法將「舊」檔案或目錄移至指定的「新」目錄。可以指定來自 fileRoot 目錄的絕對路徑或來自「舊」專案的相對路徑。 「root」值是必要的,以確保相對路徑不會高於 fileRoot。
請求範例:移動文件
[path to connector]?mode=move&old=/uploads/images/original/Image/logo.png&new=/moved/&root=/uploads/images/
回應範例:
{
"Error" : " No error " ,
"Code" : 0 ,
"Old Path" : " /uploads/images/original/Image/ " ,
"Old Name" : " logo.png " ,
"New Path" : " /uploads/images/moved/ " ,
"New Name" : " logo.png "
}
範例請求:將目錄移至不存在的目錄(將建立)
[path to connector]?mode=move&old=/uploads/images/original/Image&new=../new_dir/&root=/uploads/images/
回應範例:
{
"Error" : " No error " ,
"Code" : 0 ,
"Old Path" : " /uploads/images/original/ " ,
"Old Name" : " Image " ,
"New Path" : " /uploads/new_dir/ " ,
"New Name" : " Image "
}
delete
方法刪除給定路徑中的項目。
請求範例:
[path to connector]?mode=delete&path=/UserFiles/Image/logo.png
回應範例:
{
"Error" : " No error " ,
"Code" : 0 ,
"Path" : " /UserFiles/Image/logo.png "
}
add
方法將上傳的檔案新增至指定路徑。與其他方法不同,此方法必須傳回封裝在 HTML 中的 JSON 回應,因此回應的 MIME 類型是 text/html 而不是 text/plain。文件管理器中的上傳表單將目前路徑作為 POST 參數與上傳的文件一起傳遞。回應包括路徑以及用於儲存檔案的名稱。上傳的檔案名稱應該可以安全地用作 URL 中的路徑元件,因此至少要進行 URL 編碼。
回應範例:
{
"Path" : " /UserFiles/Image/ " ,
"Name" : " new_logo.png " ,
"Error" : " No error " ,
"Code" : 0
}
replace
方法允許使用者替換特定文件,無論新文件名如何 - 至少,新文件應具有與原始文件相同的擴展名。舊文件將自動覆蓋。與其他方法不同,此方法必須傳回封裝在 HTML 中的 JSON 回應,因此回應的 MIME 類型是 text/html 而不是 text/plain。文件管理器中的動態上傳表單將目前文件路徑作為 POST 參數與上傳的文件一起傳遞。回應包括路徑以及用於儲存檔案的名稱。
回應範例:
{
"Path" : " /UserFiles/Image/ " ,
"Name" : " new_logo.png " ,
"Error" : " No error " ,
"Code" : 0
}
editfile
方法傳回給定文件的內容(作為參數傳遞)。它使用戶能夠在線上編輯檔案(擴展名在設定檔中指定)。作為 GET 請求處理。
請求範例:
[path to connector]?mode=editfile&path=/UserFiles/MyFolder/myfile.txt
回應範例:
{
"Error" : " No error " ,
"Code" : 0 ,
"Path" : " /UserFiles/MyFolder/myfile.txt " ,
"Content" : "Content" : " Lorem ipsum dolor sit amet, consectetur adipiscing elit. rn P hasellus eu erat lorem. rnrn B ye! "
}
save
方法將覆蓋目前檔案的內容。文件管理器中的編輯表單將模式(如savefile
)、目前文件的路徑和內容作為 POST 參數傳遞。
回應範例:
{
"Error" : " No error " ,
"Code" : 0 ,
"Path" : " /UserFiles/MyFolder/myfile.txt "
}
preview
方法為所要求的影像提供顯示服務。圖片路徑透過path
參數傳遞。如果傳遞thumbnail=true
參數,則該方法將傳回影像縮圖。可以在 URL 中新增額外的參數(例如 UNIX 時間)以防止快取問題。
請求範例:
[path to connector]?mode=preview&path=/UserFiles/new%20logo.png&thumbnail=true
addfolder
方法在伺服器上的給定路徑中建立一個新目錄。
請求範例:
[path to connector]?mode=addfolder&path=/UserFiles/&name=new%20logo.png
回應範例:
{
"Parent" : " /UserFiles/ " ,
"Name" : " new_logo.png " ,
"Error" : " No error " ,
"Code" : 0
}
download
方法向使用者提供所要求的文件。目前,我們使用「application/x-download」的 MIME 類型來強制下載檔案而不是在瀏覽器中顯示檔案。未來,我們可能會對通常具有瀏覽器內檢視器的特定檔案類型進行例外處理,例如 PDF 和各種影片格式(Flash、Quicktime 等)。
請求範例:
[path to connector]?mode=download&path=/UserFiles/new%20logo.png
版權所有 (c) 2011-2013 Jason Huck、Simon Georget http://opensource.org/licenses/MIT
特此免費授予任何獲得本軟體和相關文件文件(「軟體」)副本的人不受限制地使用本軟體,包括但不限於使用、複製、修改、合併的權利、發布、分發、再授權和/或銷售軟體的副本,並允許向其提供軟體的人員這樣做,但須滿足以下條件:
上述版權聲明和本授權聲明應包含在本軟體的所有副本或主要部分中。
本軟體以「現況」提供,不提供任何明示或暗示的保證,包括但不限於適銷性、特定用途的適用性和不侵權的保證。 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE軟體.