hashfs的烧瓶扩展,一个内容寻址的文件管理系统。

Flask-HashFS的Python项目详细描述


versiontraviscoverallslicense

内容寻址文件管理系统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.orghttp://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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java OpenShift的齿轮特性   java如何在Liferay站点的每个页面上放置公司地址和电话?   java确定整数数组中是否存在一个子集,在两个条件下求和到给定的目标值   序列化为什么java中的serialVersionUID必须是静态的、最终的、长类型的?   java响应返回null   java注入接口实现Quarkus   java我不明白为什么第二次排序的运行时间比第一次慢?   (Java)显示图像的最佳方式?   java Android应用程序因添加布局而崩溃   java如何在运行时获取泛型变量的类   java Selenium web驱动程序:无效的选择器:*:WebKitFullScreenSentor   Spring中的java注入值始终为空   Eclipse中带有TestNG插件的@BeforeSuite和@AfterSuite的java问题   使用trycatch块、filewriter和printwriter在java中创建自定义类   如何在Java 安卓上绘制相交的两条线