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 --saveor
yarn add elfinder-nodeThis 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, LocalFileStorage } = require('elfinder-node');
const roots = [
{
driver: LocalFileStorage,
URL: '/uploads/', //Required
path: '/path/to/dir', //Required
permissions: { read: 1, write: 1, lock: 0 },
},
{
driver: 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);Note: This package is built as CommonJS and works with both require() and ES Module import statements.
The connector takes an array of volumes. All volumes must be configured with a driver before the connector is initiated.
driver[Required] - The volume driver to use. UseLocalFileStoragefor local filesystem access, or implement a custom driver for other storage backends (S3, FTP, SSH, etc.)URL[Required] - The URL which will be used to resolve filespath[Required] - The location of the folder or storage identifierpermissions[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
When setting up your volumes, ensure you provide correct paths for your operating system:
const roots = [
{
driver: LocalFileStorage,
path: 'C:\\Users\\username\\uploads' // Windows
URL: '/uploads/',
permissions: { read: 1, write: 1, lock: 0 }
}
];Thanks to @quantv and the community for their contributions!