hashfs的烧瓶扩展,一个内容寻址的文件管理系统。
Flask-HashFS的Python项目详细描述
内容寻址文件管理系统HashFS的烧瓶扩展名。
什么是hashfs?
hashfs是一个内容寻址的文件管理系统。那是什么意思?简单地说,hashfs根据文件的散列来管理保存文件的目录。
此类系统的典型用例如下:
- 文件只写一次,从不更改(如图像存储)。
- 最好不要有重复的文件(例如用户上传)。
- 文件元数据存储在其他地方(例如数据库中)。
什么是烧瓶散列?
flask hashfs是一个flask扩展,它将hashfs集成到flask生态系统中。
链接
快速启动
使用pip安装:
pip install Flask-HashFS
初始化
fromflaskimportFlaskfromflask_hashfsimportFlaskHashFSapp=Flask(__name__)fs=FlaskHashFS()
配置Flask-HashFS将文件存储在/var/www/data/uploads中,并在/uploads处为它们提供路由前缀。
app.config.update({'HASHFS_HOST':None,'HASHFS_PATH_PREFIX':'/uploads','HASHFS_ROOT_FOLDER':'/var/www/data/uploads','HASHFS_DEPTH':4,'HASHFS_WIDTH':1,'HASHFS_ALGORITHM':'sha256'})fs.init_app(app)
使用量
使用flask hashfs来管理使用hashfs的文件。
withapp.app_context():# Store readable objects or file pathsaddress=fs.put(io_obj,extension='.jpg')# Get a file's hash addressassertfs.get(address.id)==addressassertfs.get(address.relpath)==addressassertfs.get(address.abspath)==addressassertfs.get('invalid')isNone# Get a BufferedReader handlerfileio=fs.open(address.id)# Or using the full path...fileio=fs.open(address.abspath)# Or using a path relative to fs.rootfileio=fs.open(address.relpath)# Delete a file by address ID or pathfs.delete(address.id)fs.delete(address.abspath)fs.delete(address.relpath)
要直接访问hashfs实例,请使用client属性。
fs.clientassertisinstance(fs.client,flask_hashfs.HashFS)
为hashfs内容生成url。
withapp.test_request_context():fs.url_for('relative/file/path')
有关详细信息,请参阅http://flask-hashfs.readthedocs.org和http://hashfs.readthedocs.org上的完整文档。
更改日志
V0.3.0(2015-06-03)
- 将HashFS方法的手动代理访问替换为单个__getattr__方法。
V0.2.0(2015-06-02)
- pinhashfs依赖于>=0.3.0。(breaking change)
- 将配置键HASHFS_LENGTH重命名为HASHFS_WIDTH,以便与hashfs>=0.3.0对齐。(breaking change)
v0.1.0(2015-06-02)
- 第一次释放。
- 添加FlaskHashFS.put。
- 添加FlaskHashFS.get。
- 添加FlaskHashFS.open。
- 添加FlaskHashFS.delete。
- 添加FlaskHashFS.url_for。