Simple and easy file storages for Flask
Project description
Simple and easy file storages for Flask.
Compatibility
Flask-FS requires Python >= 3.9 and Flask/Werkzeug >= 2.0.0.
Amazon S3 support requires Boto3.
GridFS support requires PyMongo 3+.
OpenStack Swift support requires python-swift-client.
Installation
You can install Flask-FS with pip:
$ pip install flask-fs2
# or
$ pip install flask-fs2[s3] # For Amazon S3 backend support
$ pip install flask-fs2[swift] # For OpenStack swift backend support
$ pip install flask-fs2[gridfs] # For GridFS backend support
$ pip install flask-fs2[all] # To include all dependencies for all backends
Quick start
from flask import Flask
import flask_fs as fs
app = Flask(__name__)
fs.init_app(app)
images = fs.Storage('images')
if __name__ == '__main__':
app.run(debug=True)
Contributions
All contributions are welcome as long as they respect the C4 contract.
Code must follow the pep8 convention.
Changelog
Current
0.7.4 (2022-01-24)
CGWire will maintain this fork
Flask-FS2 requires Python 3.7+ and Flask/Werkzeug 2.0.0+
Remove all code related to Python 2
Added read_chunks() operations
Add region configuration for Swift and S3
0.6.1 (2018-04-19)
Fix a race condition on local backend directory creation
Proper content type handling on GridFS (thanks to @rclement)
0.6.0 (2018-03-27)
Added copy() and move() operations
delete() now supports directories (or prefixes for key/value stores)
Improve metadata() mime handling
Added explicit ImageField.full(external=False)
0.5.1 (2018-03-12)
Fix local backend list_files() nested directories handling
0.5.0 (2018-03-12)
Added metadata method to Storage to retrieve file metadata
Force boto3 >= 1.4.5 because of API change (lifecycle)
Drop Python 3.3 support
Create parent directories when opening a local file in write mode
0.4.1 (2017-06-24)
Fix broken packaging for Python 2.7
0.4.0 (2017-06-24)
Added backend level configuration FS_{BACKEND_NAME}_{KEY}
Improved backend documentation
Use setuptools entry points to register backends.
Added NONE extensions specification
Added list_files to Storage to list the current bucket files
Image optimization preserve file type as much as possible
Ensure images are not overwritted before rerendering
0.3.0 (2017-03-05)
Switch to pytest
ImageField optimization/compression. Resized images are now compressed. Default image can also be optimized on upload with FS_IMAGES_OPTIMIZE = True or by specifying optimize=True as field parameter.
ImageField has now the ability to rerender images with the rerender() method.
0.2.1 (2017-01-17)
Expose Python 3 compatibility
0.2.0 (2016-10-11)
Proper github publication
Initial S3, GridFS and Swift backend implementations
Python 3 fixes
0.1 (2015-04-07)
Initial release