FM adalah pengelola file sumber terbuka yang dirilis di bawah lisensi MIT. Ini adalah alternatif untuk elfinder atau CKFinder.
PENTING : Paket ini TIDAK DIGUNAKAN LAGI .
Sekarang, silakan gunakan paket RichFileManager dengan sejumlah fitur dan peningkatan baru.
Filemanager berada di bawah lisensi gratis. Jika Anda ingin mendukung pengembangan filemanager atau sekedar berterima kasih kepada pengelola utamanya dengan membayar sejumlah bir, Anda dapat memberikan donasi dengan mengklik tombol berikut :
Filemanager sangat terdokumentasi di halaman wiki. API, lihat di bawah.
Pembukaan
Karena banyak perubahan telah dilakukan baru-baru ini, sekarang hanya konektor PHP dan MVC yang tersedia. Anda dapat mencoba versi terbaru untuk konektor lain, tetapi tanpa jaminan konektor tersebut menerapkan semua fitur dan berfungsi dengan benar.
Untuk menggunakan konektor lain, silakan unduh versi v0.8 dari https://github.com/simogeo/Filemanager/archive/v0.8.zip (tersedia konektor PHP, ASHX, ASP, CFM, laso, PL dan JSP)
Implementasi konektor JSP/Java tersedia di: https://github.com/th-schwarz/C5Connector.Java
(1) Periksa salinan FileManager dari repositori menggunakan Git :
git klon http://github.com/simogeo/Filemanager.git
atau unduh arsip dari Github : https://github.com/simogeo/Filemanager/archive/master.zip
Anda dapat menempatkan FileManager di mana saja dalam direktori root layanan web Anda.
(2) Buat salinan file konfigurasi default ("filemanager.config.default.json" yang terletak di direktori skrip), hapus '.default' dari akhir nama file, dan edit opsi sesuai dengan wiki berikut halaman : https://github.com/simogeo/Filemanager/wiki/Filemanager-configuration-file Melihat studi kasus konfigurasi mungkin juga berguna bagi Anda : https://github.com/simogeo/Filemanager/wiki/Specify-user-folder%2C-configuration-cases
(3a) Jika Anda mengintegrasikan FileManager dengan FCKEditor, buka file fckconfig.js Anda dan temukan baris yang menentukan browser file apa yang akan digunakan untuk gambar, tautan, dll. Lihat ke bagian bawah file. Anda perlu mengubah baris seperti ini:
FCKConfig . ImageBrowser = false ;
FCKConfig . ImageBrowserURL = FCKConfig . BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
...untuk ini:
FCKConfig . ImageBrowser = true ;
FCKConfig . ImageBrowserURL = '[Path to Filemanager]/index.html' ;
(3b) Jika Anda mengintegrasikan FileManager dengan CKEditor 3.x atau lebih tinggi, cukup atur URL saat Anda mengonfigurasi instance Anda, seperti:
CKEDITOR . replace ( 'instancename' , {
filebrowserBrowseUrl : '[Path to Filemanager]/index.html' ,
... other configuration options . . .
} ) ;
Jika Anda ingin menggunakan mode dialog modal (bukan pop-up), silakan merujuk ke halaman wiki khusus.
(3c) Jika Anda mengintegrasikan FileManager dengan TinyMCE (>= 3.0), Anda harus:
Buat fungsi panggilan balik Javascript yang akan membuka halaman dasar FileManager index.html (lihat URL di bawah untuk contoh) Tambahkan baris seperti: "file_browser_callback: 'name_of_callback_function'" di perintah tinyMCE.init Lihat http://www.tinymce.com /wiki.php/TinyMCE3x:How-to_implement_a_custom_file_browser untuk lebih jelasnya.
Lihat juga halaman wiki khusus, dengan contoh TinyMCE 4: https://github.com/simogeo/Filemanager/wiki/How-to-use-the-Filemanager-with-tinyMCE-3-or-4
(4) Terakhir, khawatirkan keamanan !
Untuk konektor PHP : salin/tempel /connectors/php/default.config.php
ke /connectors/php/user.config.php
untuk menentukan fungsi otentikasi Anda sendiri. Untuk melakukannya, Anda akan menemukan contohnya di halaman wiki khusus.
ketergantungan dan kompatibilitas jQuery
Kami mencoba untuk terus memperbarui perpustakaan inti jQuery secara teratur. Jika, karena alasan apa pun, Anda tidak dapat menggunakan versi jQuery yang disematkan sekarang, Filemanager mungkin akan bekerja dengan versi jQuery >= 1.6. Anda harus menggunakan plugin jQuery.migrate() untuk menggunakannya dengan jQuery versi 1.9+.
Penting : Filemanager dirancang untuk bekerja tanpa konfigurasi khusus apa pun, tetapi menggunakannya tanpa konfigurasi apa pun SANGAT tidak aman . Silakan atur fungsi otentikasi Anda sendiri, berdasarkan file default dan merujuk ke halaman wiki khusus.
Anda dapat membuat konektor untuk bahasa pilihan sisi server Anda dengan mengikuti API sederhana ini. Anda harus memiliki skrip di lokasi berikut yang dapat merespons permintaan HTTP GET dengan mengembalikan objek JSON yang sesuai:
[path to FileManager]/connectors/[language extension]/filemanager.[language extension]
FileManager saat ini menyertakan konektor untuk PHP, MVC, JSP, laso, ASP, ASHX, PL dan CFM di lokasi berikut:
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
Selama skrip ada di lokasi ini untuk merespons permintaan, Anda dapat membagi kode (perpustakaan eksternal, file konfigurasi, dll.) sesuai keinginan Anda.
Setiap respons harus menyertakan dua kunci khusus untuk penanganan kesalahan: Kesalahan, dan Kode. Jika terjadi kesalahan pada skrip Anda, Anda dapat mengisi kunci ini dengan nilai apa pun yang Anda rasa paling tepat. Jika tidak ada error, Error harus tetap kosong atau null, dan Kode harus kosong, null, atau nol (0). Jangan gunakan nol untuk kesalahan aktual apa pun. Contoh berikut akan menjadi respons yang sesuai jika konektor menggunakan file eksternal untuk konfigurasi (disarankan), namun file tersebut tidak dapat ditemukan:
{
"Error" : " Configuration file missing. " ,
"Code" : -1
}
Skrip Anda harus menyertakan dukungan untuk metode/fungsi berikut. Permintaan GET dari FileManager menyertakan parameter "mode" yang akan menunjukkan jenis respons yang akan dikembalikan. Parameter tambahan akan memberikan informasi lain yang diperlukan untuk memenuhi permintaan, seperti direktori saat ini.
Metode getinfo
mengembalikan informasi tentang satu file. Permintaan dengan mode "getinfo" akan menyertakan parameter tambahan, "path", yang menunjukkan file mana yang akan diperiksa. Parameter boolean "getsize" menunjukkan apakah dimensi file (jika berupa gambar) harus dikembalikan.
Contoh Permintaan:
[path to connector]?mode=getinfo&path=/UserFiles/Image/logo.png&getsize=true
Contoh Respon:
{
"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
}
Kuncinya adalah sebagai berikut:
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.
Metode getfolder
mengembalikan array objek file dan folder yang mewakili konten direktori tertentu (ditunjukkan dengan parameter "path"). Itu harus memanggil metode getinfo untuk mengambil properti setiap file. Parameter boolean "getsizes" menunjukkan apakah dimensi gambar harus dikembalikan untuk setiap item. Folder harus selalu dikembalikan sebelum file. Secara opsional, parameter "tipe" dapat ditentukan untuk membatasi file yang dikembalikan (tergantung pada konektornya). Jika parameter "tipe" diberikan untuk URL index.html utama, nilai parameter yang sama akan digunakan kembali dan diteruskan ke getfolder. Ini dapat digunakan misalnya untuk hanya menampilkan file gambar di pohon sistem file.
Contoh Permintaan:
[path to connector]?mode=getfolder&path=/UserFiles/Image/&getsizes=true&type=images
Contoh Respon:
{
"/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
}
}
Setiap kunci dalam array adalah jalur ke item individual, dan nilainya adalah objek file untuk item tersebut.
Metode rename
mengganti nama item pada jalur yang diberikan dalam parameter "lama" dengan nama yang diberikan dalam parameter "baru" dan mengembalikan objek yang menunjukkan hasil tindakan tersebut.
Contoh Permintaan:
[path to connector]?mode=rename&old=/UserFiles/Image/logo.png&new=id.png
Contoh Respon:
{
"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 "
}
Metode move
memindahkan file atau direktori "lama" ke direktori "baru" yang ditentukan. Dimungkinkan untuk menentukan jalur absolut dari direktori fileRoot atau jalur relatif dari item "lama". Nilai "root" adalah wajib untuk mengamankan bahwa jalur relatif tidak berada di atas fileRoot.
Contoh Permintaan: Pindahkan file
[path to connector]?mode=move&old=/uploads/images/original/Image/logo.png&new=/moved/&root=/uploads/images/
Contoh Respon:
{
"Error" : " No error " ,
"Code" : 0 ,
"Old Path" : " /uploads/images/original/Image/ " ,
"Old Name" : " logo.png " ,
"New Path" : " /uploads/images/moved/ " ,
"New Name" : " logo.png "
}
Contoh Permintaan: Pindahkan direktori ke direktori yang belum ada (akan dibuat)
[path to connector]?mode=move&old=/uploads/images/original/Image&new=../new_dir/&root=/uploads/images/
Contoh Respon:
{
"Error" : " No error " ,
"Code" : 0 ,
"Old Path" : " /uploads/images/original/ " ,
"Old Name" : " Image " ,
"New Path" : " /uploads/new_dir/ " ,
"New Name" : " Image "
}
Metode delete
menghapus item pada jalur yang diberikan.
Contoh Permintaan:
[path to connector]?mode=delete&path=/UserFiles/Image/logo.png
Contoh Respon:
{
"Error" : " No error " ,
"Code" : 0 ,
"Path" : " /UserFiles/Image/logo.png "
}
Metode add
menambahkan file yang diunggah ke jalur yang ditentukan. Berbeda dengan metode lainnya, metode ini harus mengembalikan respons JSON-nya yang dibungkus dengan HTML , sehingga tipe respons MIME adalah teks/html, bukan teks/polos. Formulir unggahan di Manajer File melewati jalur saat ini sebagai parameter POST bersama dengan file yang diunggah. Responsnya mencakup jalur serta nama yang digunakan untuk menyimpan file. Nama file yang diunggah harus aman digunakan sebagai komponen jalur dalam URL, jadi minimal dikodekan URL.
Contoh Respon:
{
"Path" : " /UserFiles/Image/ " ,
"Name" : " new_logo.png " ,
"Error" : " No error " ,
"Code" : 0
}
Metode replace
memungkinkan pengguna untuk mengganti file tertentu apa pun nama file barunya - setidaknya, file baru harus memiliki ekstensi yang sama dengan file aslinya. File lama secara otomatis ditimpa. Berbeda dengan metode lainnya, metode ini harus mengembalikan respons JSON-nya yang dibungkus dengan HTML , sehingga tipe respons MIME adalah teks/html, bukan teks/polos. Formulir unggahan dinamis di Manajer File meneruskan jalur file saat ini sebagai parameter POST bersama dengan file yang diunggah. Responsnya mencakup jalur serta nama yang digunakan untuk menyimpan file.
Contoh Respon:
{
"Path" : " /UserFiles/Image/ " ,
"Name" : " new_logo.png " ,
"Error" : " No error " ,
"Code" : 0
}
Metode editfile
mengembalikan konten file tertentu (diteruskan sebagai parameter). Ini memberi pengguna kemampuan untuk mengedit file secara online (ekstensi ditentukan dalam file konfigurasi). Ditangani sebagai permintaan GET.
Contoh permintaan:
[path to connector]?mode=editfile&path=/UserFiles/MyFolder/myfile.txt
Contoh Respon:
{
"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! "
}
Metode save
akan menimpa konten file saat ini. Formulir edit di Manajer File meneruskan mode (sebagai savefile
), jalur file saat ini, dan konten sebagai parameter POST.
Contoh Respon:
{
"Error" : " No error " ,
"Code" : 0 ,
"Path" : " /UserFiles/MyFolder/myfile.txt "
}
Metode preview
menyajikan gambar yang diminta untuk ditampilkan. Jalur gambar dilewatkan melalui parameter path
. Jika parameter thumbnail=true
dilewatkan, metode ini akan mengembalikan thumbnail gambar. Parameter tambahan seperti waktu UNIX dapat ditambahkan ke URL untuk mencegah masalah cache.
Contoh Permintaan:
[path to connector]?mode=preview&path=/UserFiles/new%20logo.png&thumbnail=true
Metode addfolder
membuat direktori baru di server dalam jalur yang diberikan.
Contoh Permintaan:
[path to connector]?mode=addfolder&path=/UserFiles/&name=new%20logo.png
Contoh Respon:
{
"Parent" : " /UserFiles/ " ,
"Name" : " new_logo.png " ,
"Error" : " No error " ,
"Code" : 0
}
Metode download
menyajikan file yang diminta kepada pengguna. Saat ini kami menggunakan tipe MIME "application/x-download" untuk memaksa file diunduh daripada ditampilkan di browser. Di masa depan kami mungkin membuat pengecualian untuk jenis file tertentu yang sering kali memiliki penampil dalam browser seperti PDF dan berbagai format film (Flash, Quicktime, dll.).
Contoh Permintaan:
[path to connector]?mode=download&path=/UserFiles/new%20logo.png
Hak Cipta (c) 2011-2013 Jason Huck, Simon Georget http://opensource.org/licenses/MIT
Izin dengan ini diberikan, secara gratis, kepada siapa pun yang memperoleh salinan perangkat lunak ini dan file dokumentasi terkait ("Perangkat Lunak"), untuk menggunakan Perangkat Lunak tanpa batasan, termasuk namun tidak terbatas pada hak untuk menggunakan, menyalin, memodifikasi, menggabungkan , mempublikasikan, mendistribusikan, mensublisensikan, dan/atau menjual salinan Perangkat Lunak, dan mengizinkan orang yang menerima Perangkat Lunak untuk melakukan hal tersebut, dengan tunduk pada ketentuan berikut:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini akan disertakan dalam semua salinan atau sebagian besar Perangkat Lunak.
PERANGKAT LUNAK INI DISEDIAKAN "APA ADANYA", TANPA JAMINAN APA PUN, TERSURAT MAUPUN TERSIRAT, TERMASUK NAMUN TIDAK TERBATAS PADA JAMINAN KELAYAKAN UNTUK DIPERDAGANGKAN, KESESUAIAN UNTUK TUJUAN TERTENTU, DAN TIDAK ADA PELANGGARAN. DALAM KEADAAN APA PUN PENULIS ATAU PEMEGANG HAK CIPTA TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN, ATAU TANGGUNG JAWAB LAINNYA, BAIK DALAM TINDAKAN KONTRAK, HUKUM ATAU LAINNYA, YANG TIMBUL DARI, ATAU SEHUBUNGAN DENGAN PERANGKAT LUNAK ATAU PENGGUNAAN ATAU HAL-HAL LAIN DALAM PERANGKAT LUNAK.