Simple file server providing REST APIs to access remote file system.
This FileServer makes specified base directory accessible via REST APIs allowing you
to list, download, upload, move and delete files and create empty directories. It also provides
user access control and security.
FileServer may be configured in several distinct ways. Check
configurations examples chapter for more examples.
All REST endpoints use ‘dynamic’ path. This means that path **
is used as relative path in base directory.
See also postman collection example.
curl -X GET http://localhost:8888/services/files/list/ -b /tmp/cookies.txt
curl -X GET http://localhost:8888/services/files/download/path/to/001-data.txt -b /tmp/cookies.txt
curl -F 'file=@/local/path/to/file.txt' http://localhost:8888/services/files/upload/path/to/001-data.txt -b /tmp/cookies.txt
curl -X DELETE http://localhost:8888/services/files/delete/path/to/001-data.txt -b /tmp/cookies.txt
curl -X POST http://localhost:8888/services/files/createdir/path/to/directory -b /tmp/cookies.txt
curl -X POST http://localhost:8888/services/files/move/path/to/source -b /tmp/cookies.txt -d '{ "destinationPath": "path/to/destination" }''
curl -X GET http://localhost:8888/services/files/audit/path/to/source -b /tmp/cookies.txt
In order to use file server REST endpoints above, user’s http session must be authorized.
Users have defined their roles and access rights to files and directories.
See this example of server configuration.
curl -X POST http://localhost:8888/services/auth/login -H "Content-Type: application/json" -d '{ "userName": "master", "password": "secret" }' -c /tmp/cookies.txt
curl -X GET http://localhost:8888/services/auth/logout -b /tmp/cookies.txt
Selected role fileserver.admin.role
is used for admin access. Users with this role have access to special dedicated REST endpoints.
See this example of server configuration.
Refer to attached postman collection for all admin APIs.
docker run -d --name file-server-1.3.0 \
--restart unless-stopped \
-e SERVER_PORT=8888 \
-p 8888:8888 jurajveverka/file-server:1.3.0
application.yml
is located at ${FS_CONFIG_DIR}/application.yml
fileserver.home
points to /opt/data/files
docker run -d --name file-server-1.3.0 \
--restart unless-stopped \
-e SERVER_PORT=8888 \
-e APP_CONFIG_PATH=/opt/data/config/application.yml \
-v '${FS_CONFIG_DIR}':/opt/data/config \
-v '${FS_FILES_DIR}':/opt/data/files \
-p 8888:8888 jurajveverka/file-server:1.3.0
Variable fileserver.home
in application.yml
file defines base directory to be exposed via REST APIs.
gradle clean build test
java -jar build/libs/file-server-1.3.0-SNAPSHOT.jar --spring.config.location=file:./src/main/resources/application.yml