-
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
107 additions
and
202 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,212 +1,117 @@ | ||
elFinder | ||
ImJoy elFinder | ||
======== | ||
|
||
**WARNING: IF YOU HAVE OLDER (IN PARTICULAR 2.1.62 OR EARLIER) VERSIONS OF ELFINDER ON PUBLIC SERVERS, IT MAY CAUSE SERIOUS DAMAGE TO YOUR SERVER AND VISITED USER. YOU SHOULD UPDATE TO THE LATEST VERSION OR REMOVE IT FROM THE SERVER.** | ||
|
||
[![elFinder file manager for the Web](https://studio-42.github.io/elFinder/images/elFinderScr.png "elFinder file manager for the Web")](https://studio-42.github.io/elFinder/) | ||
|
||
elFinder is an open-source file manager for web, written in JavaScript using | ||
jQuery UI. Creation is inspired by simplicity and convenience of Finder program | ||
used in Mac OS X operating system. | ||
|
||
[![Download now!](https://studio-42.github.io/elFinder/images/download-icon.png)](https://github.com/Studio-42/elFinder/releases/latest) | ||
[![Packagist License](https://poser.pugx.org/studio-42/elfinder/license.png)](https://choosealicense.com/licenses/bsd-3-clause/) | ||
[![Latest Stable Version](https://poser.pugx.org/studio-42/elfinder/version.png)](https://packagist.org/packages/studio-42/elfinder) | ||
[![Total Downloads](https://poser.pugx.org/studio-42/elfinder/d/total.png)](https://packagist.org/packages/studio-42/elfinder) | ||
[![CDNJS version](https://img.shields.io/cdnjs/v/elfinder.svg)](https://cdnjs.com/libraries/elfinder) | ||
[![Donate Paypal(nao-pon)](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FF5FKRSMKYDVA) | ||
[![Donate Bitcoin(nao-pon)](https://img.shields.io/badge/Donate-Bitcoin-orange.svg)](https://studio-42.github.io/elFinder/tools/donate-bitcoin/) | ||
[![Buy me a coffee](https://img.shields.io/static/v1.svg?label=Buy%20me%20a%20coffee&message=🥨&color=black&logo=buy%20me%20a%20coffee&logoColor=white&labelColor=6f4e37)](https://www.buymeacoffee.com/naopon) | ||
|
||
Contents | ||
-------- | ||
* [Branches](#branches) | ||
* [Features](#features) | ||
* [Requirements](#requirements) | ||
* [Installation](#installation) | ||
* [Downloads](#downloads) | ||
* [Demo Sites](#demo-sites) | ||
* [FAQs](#faqs) | ||
* [3rd Party Connectors](#3rd-party-connectors) | ||
* [3rd Party Volume Drivers](#3rd-party-volume-drivers) | ||
* [3rd Party Themes](#3rd-party-themes) | ||
* [Support](#support) | ||
* [Authors](#authors) | ||
* [License](#license) | ||
|
||
Branches | ||
-------- | ||
- [master](https://github.com/Studio-42/elFinder/tree/master) - Main development branch | ||
- [2.1-src](https://github.com/Studio-42/elFinder/tree/2.1-src) - 2.1 development branch, auto build to 2.1 on commit | ||
- [2.1](https://github.com/Studio-42/elFinder/tree/2.1) - 2.1 nightly build branch | ||
|
||
Features | ||
-------- | ||
* Usability like the MacOS Finder or Windows Explorer | ||
* Mobile friendly view for touch devices | ||
* All operations with files and folders on a remote server (copy, move, | ||
upload, create folder/file, rename, etc.) | ||
* High performance server backend and light client UI | ||
* Multi-root support | ||
* Local file system, MySQL, FTP, SFTP, Box, Dropbox, GoogleDrive and OneDrive volume storage drivers | ||
* Support AWS S3, Azure, Digital Ocean Spaces and more with [League\Flysystem](https://github.com/barryvdh/elfinder-flysystem-driver) Flysystem driver | ||
* Cloud storage (Box, Dropbox, GoogleDrive and OneDrive) drivers | ||
* Background file/folder upload with Drag & Drop HTML5 support | ||
* Chunked file upload for large file | ||
* Upload directly to the folder | ||
* Upload form URL (or list) | ||
* List and Icons view | ||
* Keyboard shortcuts | ||
* Standard methods of file/group selection using mouse or keyboard | ||
* Move/Copy files with Drag & Drop | ||
* Drag & Drop to outside by starting drag with alt/option key press | ||
* Archives create/extract (zip, rar, 7z, tar, gzip, bzip2) | ||
* Rich context menu and toolbar | ||
* Quicklook, preview for common file types | ||
* Edit text files and images | ||
* "Places" for your favorites | ||
* Calculate directory sizes | ||
* Thumbnails for image, movie files | ||
* Easy to integrate with web editors (elRTE, CKEditor, TinyMCE) | ||
* Flexible configuration of access rights, upload file types, user interface | ||
and other | ||
* Extensibility by event handling of backend and client side | ||
* Simple client-server API based on JSON | ||
* Supports custom information in info dialog | ||
* Configuable columns of list view | ||
* Supports custom CSS class function for the custom folder icon | ||
* Connector plugin | ||
* [AutoRotate](https://github.com/Studio-42/elFinder/blob/2.1-src/php/plugins/AutoRotate/plugin.php) : Auto rotation on file upload of JPEG file by EXIF Orientation. | ||
* [AutoResize](https://github.com/Studio-42/elFinder/blob/2.1-src/php/plugins/AutoResize/plugin.php) : Auto resize on file upload. | ||
* [Normalizer](https://github.com/Studio-42/elFinder/blob/2.1-src/php/plugins/Normalizer/plugin.php) : UTF-8 Normalizer of file-name and file-path etc. | ||
* [Sanitizer](https://github.com/Studio-42/elFinder/blob/2.1-src/php/plugins/Sanitizer/plugin.php) : Sanitizer of file-name and file-path etc. | ||
* [Watermark](https://github.com/Studio-42/elFinder/blob/2.1-src/php/plugins/Watermark/plugin.php) : Print watermark on file upload. | ||
* For more details, see the [Changelog](https://github.com/Studio-42/elFinder/blob/master/Changelog) | ||
|
||
Requirements | ||
------------ | ||
### jQuery / jQuery UI | ||
* jQuery 1.8.0+ | ||
* jQuery UI 1.9.0+ | ||
* Required: draggable, droppable, resizable, selectable, button and slider | ||
* Recommend: sorter (To make sortable the List column and the Places) | ||
|
||
**However, we recommend newest version.** | ||
|
||
### Client | ||
* Modern browsers both of desktop or mobile. elFinder was tested in newest Chrome, Edge, Firefox, IE and Opera | ||
- **Caution**: Web App mode ("apple-mobile-web-app-capable" meta tag) on iOS is not work perfectly in elFinder | ||
|
||
### Server | ||
* Any web server | ||
* PHP 5.2+ (Recommend PHP 5.4 or higher) And for thumbnails - GD / Imagick module / convert(imagemagick) require | ||
* Recommend PHP 7.1 or higher to supports non-ASCII character of file path/name on the Windows server | ||
|
||
Installation | ||
------------ | ||
### Builds (compressed) | ||
1. Download and unzip one of the [builds](#downloads) below to your PHP server | ||
2. Rename `/php/connector.minimal.php-dist` to `/php/connector.minimal.php` | ||
3. Load `/elfinder.html` in your browser to run elFinder | ||
|
||
### Source (uncompressed) | ||
1. Clone this repository to your PHP server | ||
|
||
``` | ||
$ git clone https://github.com/Studio-42/elFinder.git | ||
``` | ||
2. Rename `/php/connector.minimal.php-dist` to `/php/connector.minimal.php` | ||
3. Load `/elfinder.src.html` in your browser to run elFinder | ||
### Installer | ||
- [Setup elFinder 2.1.x nightly with Composer](https://github.com/Studio-42/elFinder/tree/gh-pages/tools/installer/setup_with_composer) | ||
Downloads | ||
------------ | ||
**Stable releases** ([Changelog](https://github.com/Studio-42/elFinder/blob/master/Changelog)) | ||
+ [elFinder 2.1.62](https://github.com/Studio-42/elFinder/archive/2.1.62.zip) | ||
+ [elFinder 2.0.9](https://github.com/Studio-42/elFinder/archive/2.0.9.zip) (deprecated) | ||
**Nightly builds** | ||
+ [elFinder 2.1.x (Nightly)](https://github.com/Studio-42/elFinder/archive/2.1.zip) | ||
Demo sites | ||
------------ | ||
**2.1.x Nightly** | ||
+ https://studio-42.github.io/elFinder/ (with CORS) | ||
FAQs | ||
------------ | ||
### Should I use elFinder builds (compressed) or source (uncompressed)? | ||
For debugging and development, use the [source](#source-uncompressed). For production, use [builds](#builds-compressed). | ||
### How do I integrate elFinder with CKEditor/TinyMCE/elRTE/etc...? | ||
Check out the [wiki](https://github.com/studio-42/elFinder/wiki#howtos) for individual instructions. | ||
### The procedure of language files created or modified? | ||
You can create or modify the language file to use translation tool. Please refer to the pull request the results to the respective branch. | ||
* [2.1 branch translation tool](http://studio-42.github.io/elFinder/tools/langman/#2.1) | ||
3rd party connectors | ||
-------------------- | ||
* [ASP.NET](https://github.com/leniel/elFinder.Net) / [ASP.NET Core](https://github.com/gordon-matt/elFinder.NetCore) / [.NET Standard](https://github.com/mguinness/elFinder.AspNet) | ||
* [Java Servlet](https://github.com/trustsystems/elfinder-java-connector) | ||
* [JavaScript/Efw](https://github.com/efwGrp/efw3.X/blob/master/help/tag.elfinder.md) | ||
* [Nodejs](https://github.com/dekyfin/elfinder-node) | ||
* [Python](https://github.com/Studio-42/elfinder-python) | ||
* [Ruby/Rails](https://github.com/phallstrom/el_finder) | ||
3rd party Volume Drivers | ||
-------------------- | ||
* [League\Flysystem (PHP)](https://github.com/barryvdh/elfinder-flysystem-driver) (for elFinder 2.1+) driver for the [Flysystem](https://github.com/thephpleague/flysystem) | ||
3rd party Themes | ||
-------------------- | ||
Hint: [How to load CSS with RequireJS?](https://github.com/Studio-42/elFinder/wiki/How-to-load-CSS-with-RequireJS%3F) | ||
* [lokothodida/elfinder-theme-moono](https://github.com/lokothodida/elfinder-theme-moono) | ||
* [lokothodida/elfinder-theme-windows-10](https://github.com/lokothodida/elfinder-theme-windows-10) | ||
* [RobiNN1/elFinder-Material-Theme](https://github.com/RobiNN1/elFinder-Material-Theme) | ||
* [StudioJunkyard/elfinder-boostrap-theme](https://github.com/StudioJunkyard/LibreICONS/tree/master/themes/elFinder) | ||
3rd party Integrations | ||
-------------------- | ||
* [Django](https://github.com/mikery/django-elfinder) | ||
* [Drupal](https://gitlab.com/667bdrm/elfinder) | ||
* [Laravel](https://github.com/barryvdh/laravel-elfinder) | ||
* [Roundcube](https://github.com/Offerel/roundcube_elfinder) | ||
* [Symfony](https://github.com/helios-ag/FMElfinderBundle) | ||
* [Tiki Wiki](https://doc.tiki.org/elFinder) | ||
* [WordPress](https://wordpress.org/plugins/file-manager/) | ||
* [XOOPS](https://github.com/nao-pon/xelfinder) | ||
* [XOOPSCube](https://github.com/xoopscube/xelfinder) GUI-based control panel: FTP, cloud storage and editors | ||
* [Yii](http://www.yiiframework.com/extension/elfinder/) | ||
* [Zenphoto](http://www.zenphoto.org/news/elfinder/) | ||
Support | ||
------- | ||
elFinder is an open-source file manager for web, written in JavaScript using jQuery UI. See the original project [here](https://github.com/Studio-42/elFinder). | ||
|
||
* [Homepage](http://elfinder.org) | ||
* [Wiki](https://github.com/Studio-42/elFinder/wiki) | ||
* [Issues](https://github.com/Studio-42/elFinder/issues) | ||
* <[email protected]> | ||
In this project, we use elFinder as a file manager for ImJoy and integrated with [BrowserFS](https://github.com/jvilk/BrowserFS). By using a service worker, we can mount browserfs running inside a service worker, connect to IndexedDB, S3 backend, and provide an ImJoy interface to interact it inside a Jupyter notebook or other ImJoy supported websites. | ||
|
||
## Usage | ||
|
||
Authors | ||
------- | ||
You can go to https://jupyter.imjoy.io/, start a notebook and run the following code to open the file manager: | ||
|
||
Show the file manager: | ||
```python | ||
from imjoy_rpc import api | ||
async def setup(): | ||
fm = await api.createWindow( | ||
src="https://jupyter.imjoy.io/elFinder" | ||
) | ||
|
||
api.export({"setup": setup}) | ||
``` | ||
|
||
With the following window open, you can drag and drop files to the file manager to upload them to the browser, download or preview files. | ||
|
||
![Screenshot for elfinder window](./files/Screenshot-dialog-elfinder.png) | ||
|
||
```python | ||
from imjoy_rpc import api | ||
|
||
async def setup(): | ||
fm = await api.showDialog( | ||
src="https://jupyter.imjoy.io/elFinder" | ||
) | ||
selections = await fm.getSelections() | ||
await api.alert(str(selections)) | ||
|
||
|
||
api.export({"setup": setup}) | ||
``` | ||
|
||
![Screenshot for elfinder dialog](./files/Screenshot-dialog-elfinder.png) | ||
|
||
|
||
With the help of some utility functions in Python, you can also operate the files in the file manager: | ||
|
||
```python | ||
import io | ||
from imjoy_rpc.utils import open_elfinder, elfinder_listdir | ||
|
||
# import requests | ||
# # Download a test image | ||
# response = requests.get("https://images.proteinatlas.org/61448/1319_C10_2_blue_red_green.jpg") | ||
# data = response.content | ||
|
||
|
||
# Write the file to elfinder storage | ||
with open_elfinder("/home/test-image.png", "wb") as f: | ||
f.write(data) | ||
|
||
files = elfinder_listdir('/home') | ||
|
||
print(files) | ||
``` | ||
|
||
## S3 backend | ||
|
||
You can use it to operate remote files on S3, by mount the S3 bucket to the browserfs. See the example below: | ||
|
||
```python | ||
from imjoy_rpc import api | ||
|
||
access_key_id = '' | ||
secret_access_key = '' | ||
endpoint_url = '' | ||
bucket = '' | ||
prefix = '' | ||
|
||
async def setup(): | ||
fm = await api.showDialog( | ||
src="https://jupyter.imjoy.io/elFinder" | ||
) | ||
# S3 URI format: s3://accessKeyID:secretAccessKey@endpointURL/bucket/prefix | ||
await fm.mount(f"s3://{access_key_id}:{secret_access_key}@{endpoint_url}/{bucket}/{prefix}") | ||
|
||
api.export({"setup": setup}) | ||
``` | ||
|
||
As a more complete example, you can use it manage files in the Hypha App Engine. | ||
```python | ||
from imjoy_rpc import api | ||
from imjoy_rpc.hypha import login, connect_to_server | ||
|
||
SERVER_URL = "https://ai.imjoy.io" | ||
|
||
# To login, you need to click the url printed and login with your account | ||
token = await login({"server_url": SERVER_URL}) | ||
|
||
# Connect to the BioEngine server | ||
server = await connect_to_server( | ||
{"name": "test client", "server_url": SERVER_URL, "token": token} | ||
) | ||
|
||
s3 = await server.get_service("s3-storage") | ||
s3_credentials = await s3.generate_credential() | ||
|
||
* Current main developer: Naoki Sawada <[email protected]> [![Buy me a coffee](https://img.shields.io/static/v1.svg?label=Buy%20me%20a%20coffee&message=🥨&color=black&logo=buy%20me%20a%20coffee&logoColor=white&labelColor=6f4e37)](https://www.buymeacoffee.com/naopon) | ||
* Chief developer: Dmitry "dio" Levashov <[email protected]> | ||
* Maintainer: Troex Nevelin <[email protected]> | ||
* Developers: Alexey Sukhotin, Naoki Sawada <[email protected]> | ||
* Icons: PixelMixer, [Yusuke Kamiyamane](http://p.yusukekamiyamane.com), [Icons8](https://icons8.com) | ||
# Now mount it into the elFinder | ||
async def setup(): | ||
fm = await api.createWindow( | ||
src="https://jupyter.imjoy.io/elFinder" | ||
) | ||
await fm.mount(f"s3://{s3_credentials['access_key_id']}:{s3_credentials['secret_access_key']}@{s3_credentials['endpoint_url']}/{s3_credentials['bucket']}/{s3_credentials['prefix']}") | ||
|
||
We hope our tools will be helpful for you. | ||
api.export({"setup": setup}) | ||
``` | ||
|
||
|
||
License | ||
|