Użyłem phpMyAdmin jako swojego hosta lokalnego, Axios do wykonywania wewnętrznych funkcji i reagowania na wyświetlanie na stronie internetowej, stworzyłem tabelę, w której są przechowywane identyfikator i duży obiekt binarny, ponieważ duży obiekt binarny może przechowywać dane obrazu. Używałem haków stanów i w celu renderowania każdy element, który będzie wyświetlany na stronie, ale kiedy w celu renderowania strony, pojawiło się niedziałające obraz. Próbowałem console.log() dla tych danych obrazu, i one pokazały jak {typ: "Bufor", dane: Tablica(50639)} w przeglądarce konsoli.
Krótko mówiąc, staram się wyciągnąć obraz z tabeli w lokalnym hoście i wyświetlić go w przeglądarce
Reagować
function ProjectCard() {
const [projectCard, setProjectCard] = useState([]);
const instance = axios.create( {
baseURL: "http://localhost:3001/api",
});
useEffect(() => {
instance.get("/getAvailableProjects").then((response) => {
setProjectCard(response.data);
});
}, []);
return (
<div className="row g-4 py-4 border-bottom">
{projectCard.map((val) => {
return (
console.log(val.PROJECT_IMAGE) {/* displayed as {type: 'Buffer', data: Array(50639)} */}
<div className="col-lg-3 col-md-6 mb-2" key={val.PROJECT_ID}>
<img id="project-img" src={val.PROJECT_IMAGE} className="img-fluid" /> {/* BROKEN IMAGE */}
</div>
);
})}
</div>
)
};
export default ProjectCard;
Serwer
app.get("/api/getAvailableProjects", (req, res) => {
const sqlQuery = "SELECT *, from projectdetail";
db.query(sqlQuery, (_error, result) => {
res.send(result);
});
});
Czy istnieje sposób, aby przekształcić te dane dużego obiektu binarnego w prawdziwy obraz?