Ipfs

如何使用 API 將文件添加到 IPFS?

  • April 26, 2019

我已經嘗試過一些 IPFS 的 API,例如 cat、ls。但我無法使用 API 添加文件。因為沒有 IPFS API 呼叫的適當文件。

如何使用 API 在 IPFS 上添加文件?

閱讀文件

cli 中可用的每個命令也可通過 HTTP API 獲得。例如:

ipfs 群節點

捲曲http://127.0.0.1:5001/api/v0/swarm/peers

所以對於命令:

用法 ipfs add … - 將文件添加到 ipfs。

論據

< path >… - 要添加到 IPFS 的文件的路徑。

https://ipfs.io/docs/commands/#ipfs-add

等效的 API 呼叫將是:

curl -F "image=@/home/bar.jpg" 127.0.0.1:5001/api/v0/add

如果您想使用網頁將文件上傳到 ipfs,它應該類似於

&lt;form action="http://127.0.0.1:5001/api/v0/add"&gt;
 &lt;input type="file" name="image" accept="image/*"&gt;
 &lt;input type="submit"&gt;
&lt;/form&gt;

添加一個新答案,因為它與前一個答案無關。

非常感謝在 GitHub 和IPFS 論壇上支持我的Vaibhav Saini

比較簡單,當然你可以通過去掉jQuery進一步簡化,這裡只用作on change input type filehandler:

&lt;!DOCTYPE html&gt;
&lt;html&gt;
 &lt;head&gt;
   &lt;meta charset="UTF-8"&gt;
   &lt;title&gt;Infura IPFS CORS issue&lt;/title&gt;

   &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.js"&gt;&lt;/script&gt;
   &lt;script src="https://unpkg.com/ipfs-http-client@30.1.3/dist/index.js"&gt;&lt;/script&gt;
   &lt;script src="https://bundle.run/buffer@5.2.1"&gt;&lt;/script&gt;
 &lt;/head&gt;
 &lt;body&gt;

   &lt;h3&gt;readAsArrayBuffer to Buffer to Infura to IPFS&lt;/h3&gt;

   &lt;input type="file" id="upload"&gt;

   &lt;div id="link"&gt;&lt;/div&gt; &lt;!-- markup created after upload --&gt;

   &lt;script&gt;
       const ipfs = window.IpfsHttpClient('ipfs.infura.io', '5001', { protocol: 'https' });

       $("#upload").on("change", function() {
           var reader = new FileReader();
           reader.onload = function (e) {

               const magic_array_buffer_converted_to_buffer = buffer.Buffer(reader.result); // honestly as a web developer I do not fully appreciate the difference between buffer and arrayBuffer 
               ipfs.add(magic_array_buffer_converted_to_buffer, (err, result) =&gt; {
                   console.log(err, result);

             let ipfsLink = "&lt;a href='https://gateway.ipfs.io/ipfs/" + result[0].hash + "'&gt;gateway.ipfs.io/ipfs/" + result[0].hash + "&lt;/a&gt;";
             document.getElementById("link").innerHTML = ipfsLink;

               })
           }
           reader.readAsArrayBuffer(this.files[0]);
       })
   &lt;/script&gt;

 &lt;/body&gt;
&lt;/html&gt;

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