Ipfs
如何使用 API 將文件添加到 IPFS?
我已經嘗試過一些 IPFS 的 API,例如 cat、ls。但我無法使用 API 添加文件。因為沒有 IPFS API 呼叫的適當文件。
如何使用 API 在 IPFS 上添加文件?
閱讀文件:
cli 中可用的每個命令也可通過 HTTP API 獲得。例如:
ipfs 群節點
所以對於命令:
用法 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,它應該類似於
<form action="http://127.0.0.1:5001/api/v0/add"> <input type="file" name="image" accept="image/*"> <input type="submit"> </form>
添加一個新答案,因為它與前一個答案無關。
非常感謝在 GitHub 和IPFS 論壇上支持我的Vaibhav Saini。
比較簡單,當然你可以通過去掉jQuery進一步簡化,這裡只用作
on change input type file
handler:<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Infura IPFS CORS issue</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.js"></script> <script src="https://unpkg.com/ipfs-http-client@30.1.3/dist/index.js"></script> <script src="https://bundle.run/buffer@5.2.1"></script> </head> <body> <h3>readAsArrayBuffer to Buffer to Infura to IPFS</h3> <input type="file" id="upload"> <div id="link"></div> <!-- markup created after upload --> <script> 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) => { console.log(err, result); let ipfsLink = "<a href='https://gateway.ipfs.io/ipfs/" + result[0].hash + "'>gateway.ipfs.io/ipfs/" + result[0].hash + "</a>"; document.getElementById("link").innerHTML = ipfsLink; }) } reader.readAsArrayBuffer(this.files[0]); }) </script> </body> </html>