无法使用 ipfs.add() 将图像上传到 ipfs

Could not use ipfs.add() to upload image to ipfs

我正在尝试在我的 svelte 应用程序中将图片上传到 ipfs。这是我尝试上传图片的代码:

const uploadFile = async (file) => {

    const ipfs = await IPFS.create();

    const result = await ipfs.add(file);
    console.log(result)
}

file 格式为 ArrayBuffer

但是,它 returns 错误说:

(8) index.js:54 Uncaught (in promise) TypeError: callback is not a function
    at Function../node_modules/peer-info/src/index.js.PeerInfo.create (index.js:54)
    at GossipSub._onIncomingStream (index.js:174)
    at Upgrader._onStream (upgrader.js:313)
    at Mplex.onStream (upgrader.js:235)

您可以尝试在 for 循环中使用 ipfs.add 添加文件:

for await (const result of ipfs.add(file)) {
    console.log(result);
}

更多信息在这里:https://github.com/ipfs/js-ipfs/blob/master/docs/core-api/FILES.md#add

谢谢你,Mionutm!!

很有帮助。问题是 file 的格式不正确。我以为 ipfs 需要一个 ArrayBuffer 所以我把 file 读成了 ArrayBuffer 格式。

但是,我们可以通过如下访问 属性 来将上传的文件添加到 ipfs:

const file = e.srcElement.files[0];
for await (const result of ipfs.add(file)) {
    console.log(result);
}

这解决了 add <suspended>invalid content 错误。

尽管如此,TypeError: callback is not a function仍然没有解决,我认为这是node_modules(不确定)产生的错误。