You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Express.js和Node.js上传文件到IPFS并解决公网访问问题

问题原因
  • 内容仅存储在本地节点未广播:你通过本地IPFS节点上传文件后,文件默认仅保存在你的本地节点中,公共网关ipfs.io尚未从你的节点同步到对应内容,因此无法访问。
  • 本地节点网络连通性受限:如果你的节点处于内网环境、防火墙未开放IPFS默认Swarm通信端口4001,公网节点无法主动和你的节点建立连接,自然无法拉取你存储的文件。
  • 内容未被固定:若上传时未开启pin配置,本地节点的垃圾回收机制可能会清理掉刚上传的内容,导致文件无法被检索。
  • 公共网关本身限制:ipfs.io存在区域访问限制、缓存同步延迟等问题,也可能导致暂时无法访问你的文件。
解决方法
  • 排查本地节点网络:开放本地节点的4001端口防火墙规则,运行命令ipfs swarm peers确认能正常连接到公网的其他IPFS节点,保证你的节点可被公网访问。
  • 上传时开启内容固定:修改上传代码,添加pin: true参数,确保内容不会被本地节点误清理:
const filesAdded = await ipfs.add(
    { path: fileName, content: file },
    {
      progress: (len) => console.log('Uploading file...' + len),
      pin: true // 开启本地固定
    },
)
  • 主动广播CID信息:上传完成后运行命令ipfs dht provide <你的文件CID>,强制节点在IPFS分布式哈希表中广播该CID的存储信息,方便公共网关检索到你的节点并拉取内容。
  • 多网关测试验证:你可以更换其他公共IPFS网关测试访问,排除ipfs.io本身的访问限制问题。
  • 若需要长期稳定访问,可将内容上传到IPFS固定服务,这类服务会在多个公网节点存储你的内容,确保所有网关都能快速拉取到文件。

内容的提问来源于stack exchange,提问作者Petrukovich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:21:03