如何创建带路径的IPFS CID,实现基础CID加子路径访问不同内容
实现同基础CID多子路径访问的操作方法
你要的效果可以通过上传IPFS目录实现,具体操作如下:
- 把你需要对应子路径访问的所有独立文档,按照你想要的子路径名命名文件(比如需要
/23路径访问的文件就命名为23,需要/0访问的就命名为0) - 用官方IPFS节点工具Kubo执行上传命令,有两种常用方式可选:
- 把所有命名好的文件放到同一个文件夹下(比如文件夹命名为
ipfs_docs),执行递归上传命令:ipfs add -r ./ipfs_docs - 不需要提前建文件夹,直接在命令中指定所有文件并开启目录封装参数:
ipfs add --wrap-with-directory 0 23 (替换为你自己的文件名列表)
- 把所有命名好的文件放到同一个文件夹下(比如文件夹命名为
- 命令执行完成后,输出的最后一条记录对应的CID就是你需要的基础CID。如果不想让基础CID直接访问时有内容加载,不要在目录中放入
index.html文件即可。
运行原理
- IPFS中所有内容都会被计算生成对应的内容标识符CID,目录本身也是IPFS支持的内容类型:它的存储内容是一份「子路径名称→子内容CID」的映射列表,目录的CID就是基于这份映射列表计算出来的哈希值,只要目录下的文件名称、内容不变,根目录CID就不会变化。
- 当你访问
ipfs://<基础CID>/<子路径>时,IPFS节点会先拉取基础CID对应的目录映射表,找到子路径名称对应的文件CID,再拉取该文件CID对应的内容返回给你。 - 直接访问基础CID时,IPFS节点默认会尝试查找目录下的
index.html文件作为默认返回内容,如果你没有放这个文件,节点就不会返回可加载的有效内容,和你描述的表现完全一致。
内容的提问来源于stack exchange,提问作者Philogy
相关产品推荐
相关产品推荐

