• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

jeffbr13/django-ipfs-storage: IPFS storage backend for Django.

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

jeffbr13/django-ipfs-storage

开源软件地址:

https://github.com/jeffbr13/django-ipfs-storage

开源编程语言:

Python 95.4%

开源软件介绍:

django-ipfs-storage

Store Django file-uploads on the Interplanetary File System.

Uploads are added and pinned to the configured IPFS node, which returns the IPFS Content ID (a hash of the contents). This hash is the name that is saved to your database. Duplicate content will also have the same address, saving disk space.

Because of this only file creation and reading is supported.

Other IPFS users access and reseed a piece of content through its unique content ID. Differently-distributed (i.e. normal HTTP) users can access the uploads through an HTTP→IPFS gateway.

Installation

pip install django-ipfs-storage

Configuration

By default ipfs_storage adds and pins content to an IPFS daemon running on localhost and returns URLs pointing to the public https://ipfs.io/ipfs/ HTTP Gateway

To customise this, set the following variables in your settings.py:

  • IPFS_STORAGE_API_URL: defaults to 'http://localhost:5001/api/v0/'.
  • IPFS_GATEWAY_API_URL: defaults to 'https://ipfs.io/ipfs/'.

Set IPFS_GATEWAY_API_URL to 'http://localhost:8080/ipfs/' to serve content through your local daemon's HTTP gateway.

Usage

There are two ways to use a Django storage backend.

As default backend

Use IPFS as Django's default file storage backend:

# settings.py

DEFAULT_FILE_STORAGE = 'ipfs_storage.InterPlanetaryFileSystemStorage'

IPFS_STORAGE_API_URL = 'http://localhost:5001/api/v0/'
IPFS_STORAGE_GATEWAY_URL = 'http://localhost:8080/ipfs/'

For a specific FileField

Alternatively, you may only want to use the IPFS storage backend for a single field:

from django.db import models

from ipfs_storage import InterPlanetaryFileSystemStorage 


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

Don't forget the brackets to instantiate InterPlanetaryFileSystemStorage() with the default arguments!

FAQ

Why IPFS?

Not my department. See https://ipfs.io/#why.

How do I ensure my uploads are always available?

I don't know. Maybe look into using ipfs-cluster to spread it across a few nodes? Or perhaps you could integrate Eternum's hosted pinning service.

How do I backup my uploads?

See above.

How do I delete an upload?

Because of the distributed nature of IPFS, anyone who accesses a piece of content keeps a copy, and reseeds it for you automatically until it's evicted from their node's local cache. Yay bandwidth costs! Boo censorship!

Unfortunately, if you're trying to censor yourself (often quite necessary), this means the best we can do is unpin the piece of content from your own IPFS node(s) and hope nobody else has pinned it.

How do I securely expose my IPFS daemon's API to connect remotely?

Someone please tell me.

How do I securely expose my own IPFS←HTTP Gateway?

Again, see above.




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap