A simple HTTP API for storing files.
The system is configured via environment variables.
Defaults to "memory" which stores the data in RAM.
Currently supported backends are:
- file -- Stores the data on disk.
The TCP port that the server will listen on.
Only used with STORAGE_BACKEND=file
The path on the filesystem where the data will be stored.
After configuring the environment variables to your liking start the server with:
java -jar /path/to/fileStore-all-$VERSION.jar
There is also a Docker container available "tebro/filestore"
Can be used with the defaults:
docker run -d -p 10000:10000 tebro/filestore
or if you want to change some configuration (maybe want persistant storage?):
docker run -d -p 1337:1337 \ -e STORAGE_PORT=1337 \ -e STORAGE_BACKEND=file \ -v /storage:/storage \ -e STORAGE_FILE_PATH=/storage \ tebro/filestore
Using in your application
To store data with the system send it a HTTP POST request with the data you want to store in the request body.
The URL you use acts as the key. If you POST something to /foo/bar that will be the key.
To retrieve data from the system send it a HTTP GET request to a key that you have previously stored.
Node.js users can use this node module
Using the headers desrcibed below will affect the system in some way.
The standard HTTP Content-Type header is supported. It is stored as meta-data for your content and will be returned when
said data is accessed.
This is a custom header implemented in this project. Add this header with a value in seconds to your POST request when
storing data, and the system will delete the object after the amount of seconds provided has passed.
All of the current storage backends support this header.
Build it with gradle
This will create a all-in-one .jar file in build/libs/