LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > IPFS操作教程3: 将文件内容添加到本地IPFS存储库中并读取

IPFS操作教程3: 将文件内容添加到本地IPFS存储库中并读取

2019-10-22 Online 来源:区块链网络
IPFS操作教程3: 将文件内容添加到本地IPFS存储库中,并对它进行读取 本节学习目标

将文件里的内容添加到本地IPFS存储库中

使用hash值检索到对应的数据

明白IPFS的hash值和你上传文件内容的关系

N9zKdmIiSIER4kx0wnUB3Veskkrlv8DQf8pu72UW.png

学习步骤 第一步: 创建你要添加的文件

你可以上传任何类型的内容到IPFS。本教程我们使用的后缀为“.txt”的文件,但是你可以替换成其他任何文件类型,当然操作的步骤都是一样的。

我们在桌面上创建一个文件夹,命令如下:

$?cd?~/Desktop$?mkdir?ipfs-tutorial$?cd?ipfs-tutorial

然后在ipfs-tutorial目录下,创建一个mytextfile.txt文件,内容是“chaindesk is a good service Community”。在终端用命令很容易的就能创建这个文件,命令如下:

echo?"chaindesk?is?a?good?IT?service?Community"?>?mytextfile.txt

使用cat命令,查看文件的信息,命令如下:

$?cat?mytextfile.txt chaindesk?is?a?good?IT?service?Community

第二步:添加文件内容到本地IPFS存储库

命令很简单,ipfs add 文件名,操作和显示如下:

$?ipfs?add?mytextfile.txt

added?QmWKGV27xJZdZ9DzpFZMrU2RyFuVE6XEhUHRU7HMhvApYF?mytextfile.txt?41?B?/?41?B?[=========================================================]?100.00%

保存QmWKGV27xJZdZ9DzpFZMrU2RyFuVE6XEhUHRU7HMhvApYF。这个很长的字符串就是文件内容加密后的hash值。如果文件内容发生变化,那么这个hash值也会变,但是文件内容一样,返回的hash值都是一样的。

第三步:从本地IPFS存储库中读取内容

读取的命令很简单,和普通的cat命令类似,只不过这里用的是ipfs cat。而且cat后边跟的是hash值,而不是文件名。命令如下:

$?ipfs?cat?QmWKGV27xJZdZ9DzpFZMrU2RyFuVE6XEhUHRU7HMhvApYF

chaindesk?is?a?good?IT?service?Community

需要注意的是执行ipfs add命令后返回的hash值,与文件名没有关系,只和文件里面的内容有关联。

第四步:确认:IPFS的hash指向的是文件内容,而不是文件本身

当我们使用ipfs cat命令时,返回的是文件的内容,而不是文件本身。这是因为hashQmWKGV...是文件内容的hash值。我们可以测试一下,直接将内容上传到IPFS,看下效果,命令如下:

$?echo?"chaindesk?is?a?good?IT?service?Community"?|?ipfs?addadded?QmWKGV27xJZdZ9DzpFZMrU2RyFuVE6XEhUHRU7HMhvApYF?QmWKGV27xJZdZ9DzpFZMrU2RyFuVE6XEhUHRU7HMhvApYF

你会发现,返回的hash和之前上传mytextfile.txt文件返回的hash值一样。

你可以在保证文件内容一致的情况下,不断更改文件名字,然后上传到IPFS,最终返回的hash值都是一样的。自己感兴趣的,可以测试下。

第五步:修改文件的内容,将会得到不一样的hash值

更改文件mytextfile.txt里的内容,并再次上传到IPFS,将会返回不同的hash值,命令如下:

$?vimytextfile.txt$?ipfs?addmytextfile.txtadded?QmWjoU6Nm3ofbiZWsZrX898uCTFEdgJJijv2CfL5dJ5C6o?mytextfile.txt

注:vi是打开并编辑文件内容。我在内容chaindesk前边加了个The,这样文件就发生变化了,然后按esc,输入:wq,退出保存。

从结果上看,返回的hash和之前的完全不一样。

第六步:从本地IPFS存储库读取内容,并使用pipe将其处理成一个文件

我们可以通过ipfs cat+hash从IPFS读取hash对应的内容,并指定将内容存储到某个文件中。我们已经有了一个文件,即mytextfile.txt。接下来就使用这个文件来存储读取到的内容,命令如下:

$?ipfs?cat?QmWKGV27xJZdZ9DzpFZMrU2RyFuVE6XEhUHRU7HMhvApYF?>?mytextfile.txt $?cat?mytextfile.txtchaindesk?is?a?good?IT?service?Community$?ipfs?cat?QmWjoU6Nm3ofbiZWsZrX898uCTFEdgJJijv2CfL5dJ5C6o?>?mytextfile.txt $?cat?mytextfile.txtThe?chaindesk?is?a?good?IT?service?Community

当然你也可以创建新的文件,来存储内容:

$?ipfs?cat?QmWKGV27xJZdZ9DzpFZMrU2RyFuVE6XEhUHRU7HMhvApYF?>?new

注解

IPFS根据其加密hash跟踪内容。此hash唯一地标识了内容。只要内容保持不变,hash值就保持不变,但是如果内容发生变化,您将得到不同的hash值。

如果有两个包含相同内容的不同文件,IPFS将使用一个hash跟踪该内容。文件名是不同的,但内容是相同的,所以内容的hash值是相同的。

那么将会引出一个问题:怎么才能让IPFS跟踪文件名?这将是下一教程的主题。

作者:张默默

区块链高级工程师、go语言工程师、IPFS早期研究者、IPFS希望社区创始人。网络著书有《IPFS一问一答》、《IPFS操作教程》、《区块链密码学》、《区块链共识算法》;跟踪并翻译报道《IPFS Weekly》,研究并翻译IPFS、Filecoin白皮书,业界知名专家学者——张默默老师!

—-

编译者/作者:Online

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...