Ipfs

IPFS 從節點添加和讀取文件

  • January 4, 2022

我目前正在 docker 容器中使用 IPFS。我可以使用 curl 向 API 發送 HTTP 請求。我創建了一個帶有一些文本的小文本文件。我想將包含內容的文件添加到節點並在之後檢索它。

所以我做了:

curl -F file=test.txt http://localhost:5001/api/v0/add 

並收到回复

{"Name":"QmYregh1mU7otV4s37hXLKnJ2fk2e8yFbJmU9L9cM6yrQM",
"Hash":"QmYregh1mU7otV4s37hXLKnJ2fk2e8yFbJmU9L9cM6yrQM",
"Size":"16"}

現在我想讀取文件並將其保存在我的本地機器上。我用了

curl http://localhost:5001/api/v0/cat?arg=QmYregh1mU7otV4s37hXLKnJ2fk2e8yFbJmU9L9cM6yrQM 

檢索文件。回應是

test.txt

我現在的問題是:如何獲取文件的內容?

要使用 HTTP API 下載 IPFS 對象,您需要使用GET. 正如您可以在文件中閱讀的那樣。

/api/v0/get

下載 IPFS 對象。

論據

  • arg $$ string $$:要輸出的 IPFS 對象的路徑。必需:
  • output $$ string $$:應該儲存輸出的路徑。必填:沒有。
  • archive $$ bool $$: 輸出一個 TAR 檔案。必填:沒有。
  • compress $$ bool $$:使用 GZIP 壓縮壓縮輸出。必填:沒有。
  • compression-level $$ int $$: 壓縮級別 (1-9)。必填:沒有。

對於您的範例,類似以下內容應該有效:

$ curl "http://localhost:5001/api/v0/get?arg=QmYregh1mU7otV4s37hXLKnJ2fk2e8yFbJmU9L9cM6yrQM&archive=false" >> myfile
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
100  2048    0  2048    0     0   666k      0 --:--:-- --:--:-- --:--:--  666k
$ cat myfile
QmYregh1mU7otV4s37hXLKnJ2fk2e8yFbJmU9L9cM6yrQM0000644000000000000000000000001013567560642017027 0ustar0000000000000000test.txt

內容 ( test.txt) 顯示在行尾。如您所見,我只使用了一個參數 ( archive=false) 並且不起作用,因為我仍在獲取tar文件。請在此處閱讀。

為了您的興趣,可以使用CLI 命令下載對象:

get <ref>     Download IPFS objects

例子:

$ ipfs get QmYregh1mU7otV4s37hXLKnJ2fk2e8yFbJmU9L9cM6yrQM
Saving file(s) to QmYregh1mU7otV4s37hXLKnJ2fk2e8yFbJmU9L9cM6yrQM
8 B / 8 B [========================================================================================================================================================] 100.00% 0s
$ cat QmYregh1mU7otV4s37hXLKnJ2fk2e8yFbJmU9L9cM6yrQM 
test.txt

嘗試使用cat

curl -X POST "https://ipfs.elastoscarrier.org/api/v0/cat?arg=QmYregh1mU7otV4s37hXLKnJ2fk2e8yFbJmU9L9cM6yrQM"

這將返回添加文件的內容。

引用自:https://ethereum.stackexchange.com/questions/77859