This package allows you to use elFinder file manager 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/
npm install elfinder-node --save
or
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.
Below is a summary of how it is used:
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 defaultURL
[Required] - the url which will be used to resolve filespath
[Required] - The location of the folderpermissions
[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.
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 for a list of tasks to be done
Most of the work was done by @quantv