Home  >  Q&A  >  body text

Image not loading in page

I want to load sliding images in a web application and for this I am using Bootstrap carousel. Get pictures from the background. Images are stored in image state. Below is the JSON format for getting the data.

images:[
{
SNO:'1',
NAME:'image.jpg',
PIC_NAME:'image'
}
]

After uploading the images, they are stored in a special folder in Nodejs and from there, I use an endpoint to extract the images. Below is the Nodejs code

images.get('/Images/getImages/:slug', function(req, res) {
    var options = {
        root: path.join(__dirname, '/images')
    }
    res.sendFile(req.params.slug, options);
})

Here is the ReactJs code for getting and displaying images in a web application:

import React, { useState, useEffect } from "react";
import './landingPage.css'
import Instance from "../Axios/Instance";
const Carousal = () => {
    const [images, setImages] = useState([]);
    useEffect(() => {
        fetchImages();
    }, [])
    async function fetchImages() {
        const result = await Instance.get('/carousalimages/getImages');
        setImages(result.data);
    }
    console.log(images);
    return (
        <React.Fragment>
            <div id="carouselExample" class="carousel slide">
                <div class="carousel-inner">
                    {
                        images.map((pic) => {
                            return (
                                <div class="carousel-item">
                                    <img src={`http://localhost:1200/Images/getImages/${pic.NAME}`} class="d-block w-100" alt={`${pic.PIC_NAME}`} />
                                </div>
                            )
                        })
                    }
                </div>
                <button class="carousel-control-prev" type="button" data-bs-target="#carouselExample" data-bs-slide="prev">
                    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
                    <span class="visually-hidden">Previous</span>
                </button>
                <button class="carousel-control-next" type="button" data-bs-target="#carouselExample" data-bs-slide="next">
                    <span class="carousel-control-next-icon" aria-hidden="true"></span>
                    <span class="visually-hidden">Next</span>
                </button>
            </div>

        </React.Fragment>
    )
}

export default Carousal;

But don't know why the image is not loading in the app. Please help and explain. Also, I use the endpoint to get the image in img src like the code below

<img src={`http://localhost:1200/Images/getImages/${pic.NAME}`} class="d-block w-100" alt={`${pic.PIC_NAME}`} />

If there is a better way, please suggest it.

P粉238433862P粉238433862429 days ago573

reply all(1)I'll reply

  • P粉754473468

    P粉7544734682023-09-10 14:00:03

    I suspect a network error between client and server. Since I'm assuming the server is running from a different port, it should allow CORS configuration from the port the React app is running on (presumably 3000). You can easily find out by checking the development tools, especially the console tab.

    Why not store images in the React application static folder? Are images created dynamically every time?

    reply
    0
  • Cancelreply