获取上传到 IPFS 的文件夹中单个文件的 HASH

Getting HASH of individual files within folder uploaded to IPFS

当我将 .jpg 个文件的文件夹上传到 IPFS 时,我得到了该文件夹的 HASH - 这很酷。

但是那个文件夹中的每个单独的文件也都被散列了吗? 如果是这样,我如何获取每个文件的哈希值?

我基本上希望能够上传一大堆文件——比如 500 张图片——一次完成,或者以编程方式完成,然后将每个文件的哈希值返回给我。

有什么办法吗?

是的!从命令行中,您可以为 运行 ipfs add -r <path to directory>

添加的每个文件取回 CID( 内容标识符,又名 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