当前位置:首页 > JavaScript

js ipfs实现

2026-01-31 13:47:04JavaScript

IPFS 简介

IPFS(InterPlanetary File System)是一种分布式文件存储协议,允许用户在去中心化网络中存储和共享文件。通过内容寻址(CID)替代传统的基于位置的寻址,确保数据的唯一性和持久性。

安装 js-ipfs

使用 npm 或 yarn 安装 js-ipfs 库:

npm install ipfs
# 或
yarn add ipfs

初始化 IPFS 节点

创建一个简单的 IPFS 节点实例:

js ipfs实现

const IPFS = require('ipfs');

const node = await IPFS.create();
console.log('IPFS 节点已启动');

添加文件到 IPFS

通过 node.add 方法上传文件或数据:

const data = 'Hello, IPFS!';
const { cid } = await node.add(data);
console.log('文件 CID:', cid.toString());

从 IPFS 获取文件

使用 CID 检索文件内容:

js ipfs实现

const stream = node.cat(cid);
let content = '';
for await (const chunk of stream) {
  content += chunk.toString();
}
console.log('文件内容:', content);

发布与订阅消息

通过 pubsub 实现节点间通信:

const topic = 'my-topic';
// 订阅主题
await node.pubsub.subscribe(topic, (msg) => {
  console.log('收到消息:', msg.data.toString());
});
// 发布消息
await node.pubsub.publish(topic, Buffer.from('Hello from IPFS pubsub!'));

跨域配置(可选)

若在浏览器中使用,需配置 CORS:

const node = await IPFS.create({
  config: {
    Addresses: {
      Swarm: ['/ip4/0.0.0.0/tcp/4002', '/ip4/127.0.0.1/tcp/4003/ws'],
    },
    API: {
      HTTPHeaders: {
        'Access-Control-Allow-Origin': ['*'],
      },
    },
  },
});

关闭节点

结束时清理资源:

await node.stop();
console.log('节点已关闭');

注意事项

  • 浏览器环境需使用 js-ipfs-http-client 连接远程节点。
  • 生产环境建议配置持久化存储(如 repo 选项)。
  • 大文件上传需分块处理(通过 node.addchunker 参数)。

完整示例参考 js-ipfs 官方文档

标签: jsipfs
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…