如何使用 xampp 创建的 mysql 中的数据在 React 中显示图像
How to show image in react using the data from mysql created by xampp
我已经使用 nodejs 和 xampp 创建了一个服务器。在 Xampp 的图像中,我使用了 Blob long。使用 react 作为前端,我获取了图像。我将此 img 数据分配给图像 src 但它没有显示。检查图像 src,显示一长串数字。
import React, { useEffect, useState } from "react";
export default function QueryData() {
const [backenddata, setBackenddata] = useState([]);
async function fetchData(url) {
const response = await fetch(url);
const result = await response.json()
setBackenddata(result);
}
useEffect(() => {
let url = "http://localhost:3001/"; //xampp server
fetchData(url);
}, []);
return (
<div>
<img src={backenddata[0]?.ProductImage.data} />
</div>
);
}
如果您使用的是 blob,则需要使用以下代码将数据转换为 base64,然后可以在 img 标签 src 中使用 Base64
import React, { useEffect, useState } from "react";
export default function QueryData() {
const [backenddata, setBackenddata] = useState([]);
async function fetchData(url) {
const response = await fetch(url);
const result = await response.json()
// result.data should be as arrayBuffer type
let base64String = btoa(String.fromCharCode(...new Uint8Array(result.data)));
setBackenddata(base64String);
}
useEffect(() => {
let url = "http://localhost:3001/"; //xampp server
fetchData(url);
}, []);
return (
<div>
<img src={backenddata} />
</div>
);
}
这是一个 arrayBuffer 的例子
图片显示不出来是因为base64编码不正确。您可以通过与 http://jpillora.com/base64-encoder/
中的数据进行比较来验证您的 base64 结果数据
最初我用这个方法转换成bass64
var blob = new Blob(backenddata[0]?.ProductImage.data, {
type: "image/jpeg",
});
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function () {
let base64String = reader.result;
setImagesrc(base64String); //assigned to state. This base64 value was wrong compared to data from http://jpillora.com/base64-encoder/
};
所以我已经更改为以下代码,它是正确的并且与 http://jpillora.com/base64-encoder/
相同
var base64String = btoa(
String.fromCharCode(...new Uint8Array(backenddata[0]?.ProductImage.data))
);
setImagesrc(base64String);
我已经使用 nodejs 和 xampp 创建了一个服务器。在 Xampp 的图像中,我使用了 Blob long。使用 react 作为前端,我获取了图像。我将此 img 数据分配给图像 src 但它没有显示。检查图像 src,显示一长串数字。
import React, { useEffect, useState } from "react";
export default function QueryData() {
const [backenddata, setBackenddata] = useState([]);
async function fetchData(url) {
const response = await fetch(url);
const result = await response.json()
setBackenddata(result);
}
useEffect(() => {
let url = "http://localhost:3001/"; //xampp server
fetchData(url);
}, []);
return (
<div>
<img src={backenddata[0]?.ProductImage.data} />
</div>
);
}
如果您使用的是 blob,则需要使用以下代码将数据转换为 base64,然后可以在 img 标签 src 中使用 Base64
import React, { useEffect, useState } from "react";
export default function QueryData() {
const [backenddata, setBackenddata] = useState([]);
async function fetchData(url) {
const response = await fetch(url);
const result = await response.json()
// result.data should be as arrayBuffer type
let base64String = btoa(String.fromCharCode(...new Uint8Array(result.data)));
setBackenddata(base64String);
}
useEffect(() => {
let url = "http://localhost:3001/"; //xampp server
fetchData(url);
}, []);
return (
<div>
<img src={backenddata} />
</div>
);
}
这是一个 arrayBuffer 的例子
图片显示不出来是因为base64编码不正确。您可以通过与 http://jpillora.com/base64-encoder/
中的数据进行比较来验证您的 base64 结果数据最初我用这个方法转换成bass64
var blob = new Blob(backenddata[0]?.ProductImage.data, {
type: "image/jpeg",
});
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function () {
let base64String = reader.result;
setImagesrc(base64String); //assigned to state. This base64 value was wrong compared to data from http://jpillora.com/base64-encoder/
};
所以我已经更改为以下代码,它是正确的并且与 http://jpillora.com/base64-encoder/
相同 var base64String = btoa(
String.fromCharCode(...new Uint8Array(backenddata[0]?.ProductImage.data))
);
setImagesrc(base64String);