【发布时间】:2020-12-31 17:03:00
【问题描述】:
当我将 .jpg 文件的文件夹上传到 IPFS 时,我得到了该文件夹的 HASH - 这很酷。
但是该文件夹中的每个单独文件是否也被散列? 如果是这样,我如何获取每个文件的哈希?
我基本上希望能够上传一大堆文件(例如 500 张图像)并一次性完成,或者以编程方式完成,然后将每个文件的哈希值返回给我。
有什么办法吗?
【问题讨论】:
标签: hash blockchain ethereum ipfs
当我将 .jpg 文件的文件夹上传到 IPFS 时,我得到了该文件夹的 HASH - 这很酷。
但是该文件夹中的每个单独文件是否也被散列? 如果是这样,我如何获取每个文件的哈希?
我基本上希望能够上传一大堆文件(例如 500 张图像)并一次性完成,或者以编程方式完成,然后将每个文件的哈希值返回给我。
有什么办法吗?
【问题讨论】:
标签: hash blockchain ethereum ipfs
是的!从命令行中,您可以获取运行 ipfs add -r <path to directory> 时添加的每个文件的 CID(Content IDentifier,又名 IPFS 哈希)
$ ipfs add -r gifs
added QmfBAEYhJp9ZjGvv8utB3Yv8uuuxsDKjv9rurkHRsYU3ih gifs/martian-iron-man.gif
added QmRBHTH3p4W2xAzgLxvdh8VJvAmWBgchwCr9G98EprwetE gifs/needs-more-dogs.gif
added QmZbffnCcV598QxsUy7WphXCAMZJULZAzy94tuFZzbFcdK gifs/satisfied-with-your-care.gif
added QmTxnmk85ESr97j2xLNFeVZW2Kk9FquhdswofchF8iDGFg gifs/stone-of-triumph.gif
added QmcN71Qh56oSg2YXsEXuf8o6u5CrBXbyYYzgMyAkdkcxxK gifs/thanks-dog.gif
added QmTnuLaivKc1Aj8LBf2iWBHDXsmedip3zSPbQcGi6BFwTC gifs
目录的根 CID 始终是列表中的最后一项。
您可以使用--quiet 标志将该命令的输出限制为仅包含 CID
⨎ ipfs add -r gifs --quiet
QmfBAEYhJp9ZjGvv8utB3Yv8uuuxsDKjv9rurkHRsYU3ih
QmRBHTH3p4W2xAzgLxvdh8VJvAmWBgchwCr9G98EprwetE
QmZbffnCcV598QxsUy7WphXCAMZJULZAzy94tuFZzbFcdK
QmTxnmk85ESr97j2xLNFeVZW2Kk9FquhdswofchF8iDGFg
QmcN71Qh56oSg2YXsEXuf8o6u5CrBXbyYYzgMyAkdkcxxK
QmTnuLaivKc1Aj8LBf2iWBHDXsmedip3zSPbQcGi6BFwTC
或者,如果您知道某个目录的 CID,则可以使用ipfs ls 列出其中包含的文件及其各自的 CID。这里我列出了上一个示例中的 gifs 目录的内容
$ ipfs ls QmTnuLaivKc1Aj8LBf2iWBHDXsmedip3zSPbQcGi6BFwTC
QmfBAEYhJp9ZjGvv8utB3Yv8uuuxsDKjv9rurkHRsYU3ih 2252675 martian-iron-man.gif
QmRBHTH3p4W2xAzgLxvdh8VJvAmWBgchwCr9G98EprwetE 1233669 needs-more-dogs.gif
QmZbffnCcV598QxsUy7WphXCAMZJULZAzy94tuFZzbFcdK 1395067 satisfied-with-your-care.gif
QmTxnmk85ESr97j2xLNFeVZW2Kk9FquhdswofchF8iDGFg 1154617 stone-of-triumph.gif
QmcN71Qh56oSg2YXsEXuf8o6u5CrBXbyYYzgMyAkdkcxxK 2322454 thanks-dog.gif
您可以使用 js-ipfs 或 go-ipfs 中的核心 api 以编程方式。下面是使用 ipfs.addAll(files) - https://github.com/ipfs/js-ipfs/blob/master/docs/core-api/FILES.md#importing-files-from-the-file-system 文档中的 js-ipfs 从 node.js 中的本地文件系统添加文件的示例
https://www.youtube.com/watch?v=Z5zNPwMDYGg 上有一个关于如何将文件添加到 IPFS 的非常有用的视频
这里是 js-ipfs 的介绍https://github.com/ipfs/js-ipfs/tree/master/examples/ipfs-101
【讨论】: