我想从 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
应该是匹配的。