// 使用 Pinata API 上传
import pinataSDK from '@pinata/sdk';
import fs from 'fs';
const pinata = new pinataSDK('d6b2e5033bfbd419afe2', 'cd03888e7ad4e1fa5f3979e83ff9df1ed7b9f89b6ab73ce598b867e97b85d67c');
// 上传图片
async function uploadImageToPinata(imagePath) {
const readableStreamForFile = fs.createReadStream(imagePath);
const options = {
pinataMetadata: {
name: "NFT Image",
},
pinataOptions: {
cidVersion: 0
}
};
try {
const result = await pinata.pinFileToIPFS(readableStreamForFile, options);
console.log('Image IPFS Hash:', result.IpfsHash);
return result.IpfsHash;
} catch (error) {
console.error('Error uploading image:', error);
}
}
// 上传 metadata
async function uploadMetadataToPinata(metadata) {
const options = {
pinataMetadata: {
name: "NFT Metadata",
},
pinataOptions: {
cidVersion: 0
}
};
try {
const result = await pinata.pinJSONToIPFS(metadata, options);
console.log('Metadata IPFS Hash:', result.IpfsHash);
return result.IpfsHash;
} catch (error) {
console.error('Error uploading metadata:', error);
}
}
// 完整流程
async function uploadNFTData() {
// 1. 先上传图片
const imageHash = await uploadImageToPinata('./2.png');
// 2. 创建 metadata
const metadata = {
name: "My Awesome NFT #1",
description: "This is my first NFT!",
image: `ipfs://${imageHash}`,
attributes: [
{
trait_type: "Color",
value: "Blue"
},
{
trait_type: "Rarity",
value: "Common"
}
]
};
// 3. 上传 metadata
const metadataHash = await uploadMetadataToPinata(metadata);
console.log('Final metadata URI:', `ipfs://${metadataHash}`);
return `ipfs://${metadataHash}`;
}
uploadNFTData()
// 使用 Pinata API 上传
import pinataSDK from '@pinata/sdk';
import fs from 'fs';
const pinata = new pinataSDK('d6b2e5033bfbd419afe2', 'cd03888e7ad4e1fa5f3979e83ff9df1ed7b9f89b6ab73ce598b867e97b85d67c');
// 上传图片
async function uploadImageToPinata(imagePath) {
const readableStreamForFile = fs.createReadStream(imagePath);
const options = {
pinataMetadata: {
name: "NFT Image",
},
pinataOptions: {
cidVersion: 0
}
};
}
// 上传 metadata
async function uploadMetadataToPinata(metadata) {
const options = {
pinataMetadata: {
name: "NFT Metadata",
},
pinataOptions: {
cidVersion: 0
}
};
}
// 完整流程
async function uploadNFTData() {
// 1. 先上传图片
const imageHash = await uploadImageToPinata('./2.png');
}
uploadNFTData()