elfinder-node
Version:
A NodeJS connector/backend for elFinder file manager
82 lines (58 loc) • 2.49 kB
Markdown
[](https://github.com/dkyeremeh/elfinder-node/actions/workflows/int-test.yml)
[](https://github.com/dkyeremeh/elfinder-node/actions)
This package allows you to use [elFinder file manager](https://github.com/Studio-42/elFinder) with Nodejs.
It currently implements LocalFileStorage only.
Work is being done to allow ftp, ssh and cloud storage compatibility.
https://studio-42.github.io/elFinder/
```sh
npm install elfinder-node --save
```
or
```sh
yarn add elfinder-node
```
This package should be implemented as a middleware for Express server. You can see an example of how this package is used [here](/tests).
Below is a summary of how it is used:
```javascript
const express = require('express');
const app = express();
const elFinder = require('elfinder-node');
const roots = [
{
driver: elFinder.LocalFileStorage,
URL: '/uploads/', //Required
path: '/path/to/dir', //Required
permissions: { read: 1, write: 1, lock: 0 },
},
{
driver: elFinder.LocalFileStorage,
URL: '/404/', //Required
path: 'private', //Required
permissions: { read: 1, write: 0, lock: 1 },
},
];
app.use('/connector', elFinder(roots));
app.listen(process.env.PORT || 8000);
```
The connector takes an array of volumes. All volumes are local files and must be created before the connector is initiated
- `driver` [optional] - The volume driver to use. Only LocalFileStorage is implemented at the moment and is the default
- `URL` [Required] - the url which will be used to resolve files
- `path` [Required] - The location of the folder
- `permissions` [optional] - An object containing the file permissions. The permissions will apply to everyone if you use an object as shown in the example above.
You can also use a custom function which returns an object containing the permissions. This is useful for a multi-user system.
```javascript
permissions: function (path) {
if (user.canAccess(path)) {
return { read: 1, write: 1, lock: 0 };
} else return { read: 0, write: 0, lock: 1 };
};
```
There is more work to be done to make this project great. View the [ROADMAP](/ROADMAP.md) for a list of tasks to be done
Most of the work was done by [@quantv](https://github.com/quantv)