Django的IPFS存储后端。
django-ipfs-storage的Python项目详细描述
存储Django file-uploads 在Interplanetary 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网关?
再次,见上文。