After I mint the NFTs successfully to Polygon, the metadata doesnât seem to upload for these files. When I was testing yesterday with smaller files it worked fine.
When I try the validate asset link from OpenSea I get:
{
âsuccessâ: false
}
.jscode1
let fs = require(âfsâ);
let axios = require(âaxiosâ);
let media = [âalbumcover.pngâ, âFung Ku.mp3â, âHoles.mp3â];
let ipfsArray = [];
let promises = [];
for (let i = 0; i < media.length; i++) {
promises.push(
new Promise((res, rej) => {
fs.readFile(`${__dirname}/export/${media[i]}`, (err, data) => {
if (err) rej();
ipfsArray.push({
path: `media/${i}`,
content: data.toString("base64"),
});
res();
});
})
);
}
Promise.all(promises).then(() => {
axios
.post("https://deep-index.moralis.io/api/v2/ipfs/uploadFolder", ipfsArray, {
headers: {
"X-API-KEY":
"API Key",
"Content-Type": "application/json",
accept: "application/json",
},
})
.then((res) => {
console.log(res.data);
})
.catch((error) => {
console.log(error);
});
});
.jscode2
let fs = require(âfsâ);
let axios = require(âaxiosâ);
let songs = [âFung Ku.mp3â, âHoles.mp3â];
let durations = [â1:56â, â3:05â];
let ipfsArray = [];
for (let i = 0; i < songs.length; i++) {
ipfsArray.push({
path: `metadata/${i}.json`,
content: {
image: `ipfs://QmZfHUBtj4ijp3321hCceCDmJ8jC21jwDwRz5znbwwv69W/media/0`, //xxx = hash
name: songs[i],
animation_url: `ipfs://QmZfHUBtj4ijp3321hCceCDmJ8jC21jwDwRz5znbwwv69W/media/${i}`, //xxx = hash
duration: durations[i],
artist: "Aash",
year: "2022"
},
});
}
axios.post(âhttps://deep-index.moralis.io/api/v2/ipfs/uploadFolderâ, ipfsArray, {
headers: {
"X-API-KEY":
"API Key",
"Content-Type": "application/json",
accept: "application/json",
},
})
.then((res) => {
console.log(res.data);
})
.catch((error) => {
console.log(error);
});
Smart Contract:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
import âgithub.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Counters.solâ;
import âgithub.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/extensions/ERC721URIStorage.solâ;
import âgithub.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.solâ;
contract NFT is ERC721URIStorage {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
address public owner;
constructor() ERC721("1st AUNS NFT Album", "AUNSS") {
owner = msg.sender;
createToken("ipfs.moralis.io:2053/ipfs/QmSTfn89CNcpWZ8RDpLwYvcu32fDbxbP9Yh1MeuyGNpsgu/metadata/0.json");
createToken("ipfs.moralis.io:2053/ipfs/QmSTfn89CNcpWZ8RDpLwYvcu32fDbxbP9Yh1MeuyGNpsgu/metadata/1.json");
}
function createToken(string memory tokenURI) public returns (uint) {
require(msg.sender == owner, "Only owner is allowed to createTokens");
_tokenIds.increment();
uint256 newItemId = _tokenIds.current();
_mint(msg.sender, newItemId);
_setTokenURI(newItemId, tokenURI);
return newItemId;
}
}