jVolumes
An abstraction to handle different types of file storage
Problem
Storing files in the cloud (AWS S3, Google Cloud Storage, etc.) requires the use of the provider's SDK. Although these APIs are not complex, it is still a little tiring to use them.
The Spring Framework presents a very cool abstraction called Resource, which, in addition to the Spring Cloud, adds support for Amazon S3, Google Cloud Storage and Azure Blob Storage.
Unfortunately, Spring's Resource class does not have some operations like copying, moving and deleting files from these locations. And finally, if your project is not based on Spring, you can not the abstraction of the Spring Framework.
Solution
A small API inspired by the Resource of Spring Framework, but independent of Spring. This means that you can use it in any environment (Java EE/Jakarta EE, Spring).
FileResource.of("file://C:/images/book.jpg")
.copyTo("s3://[your-s3-bucket]/book.jpg");