javascriptinfrastructureintermediate
IPFS Upload with Pinata
Upload metadata or images to IPFS via Pinata's API for NFT metadata.
All snippets
Code
javascript
import fs from "fs";
import FormData from "form-data";
async function uploadToIPFS(filePath) {
const form = new FormData();
form.append("file", fs.createReadStream(filePath));
const res = await fetch("https://api.pinata.cloud/pinning/pinFileToIPFS", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.PINATA_JWT}`,
},
body: form,
});
const data = await res.json();
return `ipfs://${data.IpfsHash}`;
}
// Upload NFT metadata JSON
async function uploadMetadata(metadata) {
const res = await fetch("https://api.pinata.cloud/pinning/pinJSONToIPFS", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.PINATA_JWT}`,
},
body: JSON.stringify({ pinataContent: metadata }),
});
const data = await res.json();
return `ipfs://${data.IpfsHash}`;
}Explanation
Pinata is a popular IPFS pinning service. Upload files via multipart form data and metadata via JSON. The returned IpfsHash can be combined with an IPFS gateway URL (e.g., https://ipfs.io/ipfs/HASH) to serve NFT metadata.
ipfspinatastoragejavascript