当前位置:首页 > 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实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js 实现全屏

js 实现全屏

使用 requestFullscreen 方法 通过调用元素的 requestFullscreen 方法可以实现全屏。该方法兼容现代浏览器,但不同浏览器可能需要前缀。 const element =…