Node.js bridge for angular-filemanager
npm install angular-filemanager-nodejs-bridgeThis project provides a backend for the fantastic angular-filemanager UI written with Node.js and Express.
CAUTION: This project is a work in progress!
Currently the following operations are (partially) implemented:
* Listing
* Rename/Move
* Copy
* Remove
* Create folder
* Upload file
* Download/Preview
* Proper error handling
* Security: Ensure users cannot access paths they are not allowed to access (e.g. passing "../../" as path)
* Missing API functions
* Edit file
* Get content of a file
* Set permissions
* Compress file
* Extract file
* Implement new API for click-changes branch of angular-filemanager.
1. Checkout this Git repository:
```
git clone https://github.com/fkoester/angular-filemanager-nodejs-bridge.git
2. Install dependencies:
``
npm install
3. run
``
DATA_DIR=/tmp npm start
Change DATA_DIR variable to the root folder you want angular-filemanager to operate on
4. Configure angular-filemanager in your angular app:
`
app.config(function (fileManagerConfigProvider) {
var defaults = fileManagerConfigProvider.$get();
fileManagerConfigProvider.set({
listUrl: 'http://localhost:5000/list',
downloadFileUrl: 'http://localhost:5000/download',
uploadUrl: 'http://localhost:5000/upload',
removeUrl: 'http://localhost:5000/remove',
createFolderUrl: 'http://localhost:5000/createFolder',
renameUrl: 'http://localhost:5000/rename',
copyUrl: 'http://localhost:5000/copy'
});
});
`
The easiest way to get it up running is using docker-compose, just run docker-compose up in the project root. This exports the host's /tmp directory. You can change this by changing the docker-compose.yml file.
If you want to integrate this bridge into your own Express application you can do so by adding it as a dependency:
1. Install via npm
``
npm install --save angular-filemanager-nodejs-bridge
2. Import and configure the router
`
const express = require('express');
const filesRouter = require('angular-filemanager-nodejs-bridge').router;
const routes = express.Router();
routes.use('/files', filesRouter);
`
3. Configure a custom base dir function (optional)
`
const pathresolver = require('angular-filemanager-nodejs-bridge').pathresolver;
pathresolver.baseDir = function(req) {
if(req.body.username = 'foo') {
return '/foo';
}
return '/bar';
};
``