我想从某些网址加载图像,例如
https://example.com/picture1.png
。
那么,我想弄清楚:
我正在尝试用
ipfs-mini
来做到这一点。
我的代码:
const axios = require("axios");
const Web3 = require("web3");
const IPFS = require('ipfs-mini');
const sizeOf = require('image-size');
const web3 = new Web3();
const ipfs = new IPFS({ host: 'ipfs.infura.io', port: 5001, protocol: 'https' });
const loadAndHashImage = async (_url) => {
const response = await axios.get(_url, { responseType: 'arraybuffer' });
const buffer = Buffer.from(response.data, "utf-8");
const dimensions = sizeOf(buffer);
console.log("Image Width:", dimensions.width)
console.log("Image Height:", dimensions.height)
const imageIpfsCid = await ipfs.add(buffer);
console.log("Image IPFS CID:", imageIpfsCid); // is different for some reason
const imageHash = web3.utils.keccak256(buffer);
console.log("Image Hash:", imageHash);
const urlIpfsCid = _url.substring(21)
console.log("NEEDS TO BE TRUE:", imageIpfsCid === urlIpfsCid)
}
loadAndHashImage("https://ipfs.io/ipfs/QmSsYRx3LpDAb1GZQm7zZ1AuHZjfbPkD6J7s9r41xu1mf8");
(现在,我传入一个 IPFS url,因为它允许我事先知道我应该在
imageIpfsCid
变量中获取什么 IPFS CID。)
目前,
imageIpfsCid
与原来传入的CID不一样,说明有问题。
如果我转到
imageIpfsCid
,我的计算机不会查看图像,而是自动开始下载文件,这让我怀疑我实际上并没有将图像添加到 IPFS,而是将其添加到数据中。
但是,我似乎不知道如何解决这个问题。
修复后,传入的 CID 和
imageIpfsCid
应该匹配。
你可以参考这个链接它有完整的IPFS与nodejs的实现