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

使用ipfs-http-client创建文件/文件夹时如何获取CID

获取IPFS MFS目录与文件的CID

问题原因

ipfs.files.mkdir 和 ipfs.files.write 这两个MFS(可变文件系统)操作默认不会返回CID——前者仅完成目录创建,后者仅完成文件写入,都不会主动返回路径对应的CID数据,所以你看到返回值为空是正常行为。要获取CID,需要主动调用 ipfs.files.stat 方法查询对应路径的元数据。

解决方案代码示例

1. 创建目录后立即获取目录CID

// 创建目录(parents: true 自动创建不存在的父目录)
await ipfs.files.mkdir('/foldername', { parents: true });
// 查询目录元数据获取CID
const dirStat = await ipfs.files.stat('/foldername');
console.log('目录CID:', dirStat.cid.toString());

2. 写入文件后获取文件与目录CID

fs.readFile(temFilePath, async (err1, data) => {
  if (err1) throw err1;
  
  // 写入文件到MFS目录
  await ipfsClient.files.write("/foldername/file.png", data, { create: true });
  
  // 获取文件CID
  const fileStat = await ipfsClient.files.stat("/foldername/file.png");
  const fileCid = fileStat.cid.toString();
  
  // 获取更新后的目录CID(目录内容变化后CID会更新)
  const dirStat = await ipfsClient.files.stat("/foldername");
  const dirCid = dirStat.cid.toString();
  
  console.log('文件CID:', fileCid);
  console.log('目录CID:', dirCid);
  
  res.status(201).send({
    message: "file uploaded successfully",
    fileCid: fileCid,
    dirCid: dirCid
  });
});

关键说明

  • MFS是可变文件系统,目录的CID会随着目录内文件的添加、删除、修改而变化,所以每次修改目录内容后,都需要重新调用 files.stat 获取最新的目录CID。
  • files.stat 返回的对象中,cid 是CID实例,调用 toString() 可以得到字符串格式的CID,方便后续使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:20:30