A simple HTTP API for storing files.
The system is configured via environment variables.
Defaults to "memory" which stores the data in RAM.
export STORAGE_BACKEND=file
Currently supported backends are:
- memory
- file -- Stores the data on disk.
Default: 10000
The TCP port that the server will listen on.
export STORAGE_PORT=10000
Only used with STORAGE_BACKEND=file
Default: /tmp/fileStorage
The path on the filesystem where the data will be stored.
export STORAGE_FILE_PATH=/tmp/fileStorage
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
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
./gradlew fatjar
This will create a all-in-one .jar file in build/libs/