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

React中如何通过Pinata的pinJsonToIpfs方法将多份NFT元数据存入同一目录?

Pinata wrapWithDirectory 机制说明及批量NFT元数据归档方案

你的当前代码

const metadata = {
                pinataContent: {
                    name: nftItem.name,
                    image: imageUrl,
                    description: nftItem.description,
                    external_url: nftItem.externalUrl,
                    attributes: nftItem.attributes || [],
                },
                pinataOptions: { wrapWithDirectory: nftList.length > 1 },
                pinataMetadata: {
                    name: `${nftItem.id}`,
                },
            };

            const pinataMetadata = await axios.post(
                'https://api.pinata.cloud/pinning/pinJSONToIPFS',
                metadata,
                {
                    headers: {
                        'Content-Type': 'application/json',
                        Authorization: `Bearer ${pinata.data.apiJwt}`,
                    },
                },
            );

wrapWithDirectory 工作机制

  • 当设置为true时,Pinata不会直接上传单个文件,而是自动创建一个新目录,把你上传的文件放进这个目录,最终返回的IPFS哈希是这个目录的哈希,而非文件本身的哈希。
  • 但你当前的遍历上传逻辑,即使开启这个选项,每个NFT元数据都会被包裹在独立的目录里,无法实现所有文件存到同一个文件夹的需求。

实现批量归档到同一文件夹的方案

要让所有NFT元数据存到Pinata的同一个文件夹,需要一次性上传整个目录结构,而非逐个上传文件:

// 1. 先构建包含所有NFT元数据的目录内容
const directoryContent = {};
nftList.forEach(nftItem => {
  // 用NFT的id作为文件名,方便识别和访问
  directoryContent[`${nftItem.id}.json`] = {
    name: nftItem.name,
    image: imageUrl,
    description: nftItem.description,
    external_url: nftItem.externalUrl,
    attributes: nftItem.attributes || [],
  };
});

// 2. 配置Pinata上传参数
const metadata = {
  pinataContent: directoryContent,
  pinataOptions: { wrapWithDirectory: true },
  pinataMetadata: {
    name: "NFT批量元数据目录", // 给目录命名,Pinata后台会显示这个名称
  },
};

// 3. 一次性上传整个目录
const pinataResponse = await axios.post(
  'https://api.pinata.cloud/pinning/pinJSONToIPFS',
  metadata,
  {
    headers: {
      'Content-Type': 'application/json',
      Authorization: `Bearer ${pinata.data.apiJwt}`,
    },
  },
);

效果说明

  • 上传完成后,Pinata后台会出现一个名为NFT批量元数据目录的文件夹,里面包含所有NFT的元数据JSON文件。
  • 你可以通过IPFS目录哈希/${nftItem.id}.json的路径,访问单个NFT的元数据文件。

内容的提问来源于stack exchange,提问作者Егор Довыденко

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:05:10