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第三方库


热门话题
java Redis MQ在springboot程序中与JDBC存在问题   java比较数组中的索引值并返回新数组   java为什么Jericho解析器不能解析这个HTML代码?   使用java的文件IO   使用OpenCV实现java RGB到LMS颜色空间的转换   java有什么区别吗?SwingWorker#发布vs SwingUtilities#调用器   java在列(数量)中,我也有一些double和N/a类型的值。如何使用比较器对两者进行排序?   java HSQLDB:。脚本文件在并行执行多个项目[多线程环境]期间自动删除?   java如何在JAXWS出现异常时发送自定义响应消息而不是错误消息?   SpringJavaTomcat:重新加载上下文。不重新启动服务器的xml   JAVA中的对象数组提供InputMismatchException   java是分析和过滤独特句子的最佳算法?   eclipse编写自定义重构脚本的最佳java库是什么?   来自ArrayList的java随机背景<Drawable>   java提取服务器证书   java异常:尝试调用虚拟方法“int com”。谷歌。安卓gms。地方位置请求。空对象引用上的b()