on open sea nft themselves are not displayed, there are no metadata or pictures themselves

I have a problem I create a contract with nft in remix ide at this stage everything works, but on open sea nft themselves are not displayed, there are no metadata or pictures themselves, although the contract sees them

I guess that we will need more info, like what is the contract address, on what chain, what is the opensea link, how does metadata look like, how does a picture url look like.

Have you found the solution? i also have same issue. Metadata, image and animations uploaded successfully on ipfs, then minted/deployed with this block of code on remix.
i’m doing a loop to mint 100 nft, which doesn’t show it’s image and metadata on opensea, only blank image and no metadata.

If i do them one by one without loop like this, it works
_mint(msg.sender, 2, 1, “”);
_mint(msg.sender, 3, 1, “”);

contract NFTContract is ERC1155, Ownable {
    using SafeMath for uint256;

    string public name = "test-ft-v1";

    constructor()
    ERC1155(
        "ipfs://meta_hash/metadata/{id}.json" 

    )
    {
        // account, token_id, number
       // Mint 100 nft
        for(uint i=1; i<=100; i++){
            _mint(msg.sender, i, 1, "");
        }
    }
}

Do you have a link on a block explorer with this smart contract with for deployed?

no, but i found the issue, it’s because i was running a job queue to upload one by one on ipfs using moralis. as i’m not doing bulkUpload once with all file, i’m getting different meta hash. so, while deploying the smart contract, i’m using a static meta hash that is not same for all files uploaded on ipfs. So, the metadata can’t be accessed.

 constructor()
    ERC1155(
        "ipfs://meta_hash/metadata/{id}.json" 

    )

i’m not sure if there’s any way to use a existing meta hash to upload the file. cause with different meta hash i can’t think a easy way to generate 10k nft.
using axios to upload the file

 const api_url="https://deep-index.moralis.io/api/v2/ipfs/uploadFolder"

axios.post(
                  api_url,
                  [
                    {
                      path: `images/${paddedHex}.png`,
                      content: imageFile.toString("base64"),
                    },
                  ],
                  {
                    headers: {
                      "X-API-Key": xAPIKey,
                      "content-type": "application/json",
                      accept: "application/json",
                    },
                  }
                );

CAN?T UPLOAD ALL TOGETHER AS GETTING LIMIT EXCEED ERROR

that uploadFolder doesn’t work to well now, it has a small size limit

maybe you can upload to IPFS all those 10k metadata files using another IPFS provider

i’m still learning web3 development. Can you suggests if this metahash strategy is moralis thing or exists for other provider as well.

other IPFS providers also have this functionality of uploading files in a folder on IPFS

Hi cryptokid, I am also facing the same problem where I can’t see any metadata or the image.

This is the script that I am running on remix:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

//import 1155 token contract from Openzeppelin
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/ERC1155.sol";
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol";
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol";

// Example contract to be deployed via https://remix.ethereum.org/ for testing purposes.

contract NFTContract is ERC1155, Ownable {
    using SafeMath for uint256;

    constructor()
        ERC1155(
            "ipfs:/Qmc5DEyEGgqFfjQ8ajLAjgLZM3gNeTpz7ZBcjDX7F4P3Q5/metadata/{id}.json" // You can get this saved in dasboard of your Moralis server instance.
        )
    {
        // account, token_id, number
        _mint(msg.sender, 1, 1, "");
        _mint(msg.sender, 2, 1, "");
        _mint(msg.sender, 3, 1, "");
        _mint(msg.sender, 4, 1, "");
        _mint(msg.sender, 5, 1, "");
        _mint(msg.sender, 6, 1, "");
        _mint(msg.sender, 7, 1, "");
        _mint(msg.sender, 8, 1, "");
        _mint(msg.sender, 9, 1, "");
        _mint(msg.sender, 10, 1, "");
    }
}

based on your code, seems like you need the URI to be:

ipfs://...

but yours only have one slash like this ipfs:/...

Also I tried to open your IPFS URL, seems like it didn’t find anything

Hi YosephKS, this worked thanks!
But it only shows the images and details for my first 9 nfts. The details for the 10th nft is shown but the image is not there, would you happen to know why?

The OpenSea link is as below:

the token_uri is in hex and not in decimal, so the uri for token_id 10 should end with letter a and not with 10.

1 Like

I see, thank you very much!

Do you have a sample of the solidity
for this
_mint(msg.sender, 10, 1, “”);

How to send in ids as hex once you cross id 9?
Do you have to create the metadata with a hex value and the image, etc
@cryptokid
I’ve looked here
https://eips.ethereum.org/EIPS/eip-1155#metadata
But not sure how the sample app that creates the metadata and uploads images


will create the id’s that will work beyond 9 images, as these need to be hex

Fixed, when generating the metadata and images, their file names must be in lowercase hex, then in solidity you use the decimal id to locate the metadata, i.e. token_id = 15 will equal e.

1 Like