Django的IPFS存储后端。

django-ipfs-storage的Python项目详细描述


存储Django file-uploadsInterplanetary File System上。

上传被添加并固定到配置的ipfs节点,该节点返回 ipfs内容id(内容的散列)。这个散列就是 已保存到数据库中。重复的内容也将具有相同的 地址,节省磁盘空间。

因此,只支持创建和读取文件。

其他ipfs用户通过其独特的 内容标识。不同分布的(即普通http)用户可以访问 通过http→ipfs网关上传。

安装

pip install django-ipfs-storage

配置

默认情况下,ipfs_storage将内容添加并固定到ipfs守护进程 在本地主机上运行并返回指向公共 https://ipfs.io/ipfs/http网关

要自定义此项,请在settings.py中设置以下变量:

  • IPFS_STORAGE_API_URL:默认为 'http://localhost:5001/api/v0/'
  • IPFS_GATEWAY_API_URL:默认为'https://ipfs.io/ipfs/'

IPFS_GATEWAY_API_URL设置为'http://localhost:8080/ipfs/'设置为 通过本地守护进程的http网关提供内容。

用法

有两种方法可以使用django存储后端。

作为默认后端

使用ipfs作为Django’s default file storage backend

# settings.pyDEFAULT_FILE_STORAGE='ipfs_storage.InterPlanetaryFileSystemStorage'IPFS_STORAGE_API_URL='http://localhost:5001/api/v0/'IPFS_STORAGE_GATEWAY_URL='http://localhost:8080/ipfs/'

对于特定的文件字段

或者,您可能只想将ipfs存储后端用于 单个字段:

fromdjango.dbimportmodelsfromipfs_storageimportInterPlanetaryFileSystemStorageclassMyModel(models.Model):# …file_stored_on_ipfs=models.FileField(storage=InterPlanetaryFileSystemStorage())other_file=models.FileField()# will still use DEFAULT_FILE_STORAGE

不要忘记要实例化的括号 InterPlanetaryFileSystemStorage()带有默认参数!

常见问题解答

为什么选择IPF?

不是我的部门。见https://ipfs.io/#why

如何确保我的上传始终可用?

我不知道。可能会考虑使用 ipfs-cluster展开 穿过几个节点?或者你可以整合 Eternum的托管固定服务。

如何备份上载?

见上文。

如何删除上载?

由于ipfs的分布式特性,任何访问一个片段的人 的内容保留一个副本,并自动为您重播,直到 从节点的本地缓存中逐出。带宽成本太高了!喝倒采 审查制度!

不幸的是,如果你试图审查自己(通常 这意味着我们所能做的就是解开内容 从您自己的ipfs节点,希望没有其他人钉住它。

如何安全地公开ipfs守护进程的api以进行远程连接?

有人请告诉我。

如何安全地公开我自己的ipfs☆http网关?

再次,见上文。

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

推荐PyPI第三方库


热门话题
使用maven进行junit插件测试的java代码覆盖率   参数无效的java HttpURLConnection GET调用   在Java中管理到数据库的多个连接的数据库   使用Java流在复杂数据结构中搜索   java Nutch 2.2.1构建卡滞问题   java如何将测微计计时器与webflux端点一起使用   java如何在带有Gradle的JAR中包含单个依赖项?   java jpa保存方法返回空结果   Android中处理程序和线程之间的java差异,处理程序是否创建单独的线程?   安卓 studio Java倒数计时器暂停代码执行   初始化接口中常量的java条件   java Apache骆驼上下文启动失败   java如何使用Discord API指定父类别?   Java在arraylist中存储select语句的结果是好还是坏的方法?   java动态下拉搜索栏结果不会解析到Selenium的列表中   加密从一个文件字符串创建java私钥和公钥   编程中的会话复制(Weblogic和Java)