当前位置:首页 > React

react如何从后端获取图片

2026-01-25 15:40:57React

使用 Fetch API 获取图片

在 React 中通过 fetch 从后端获取图片数据,通常返回的是二进制流(Blob)。将 Blob 转换为可展示的 URL 并渲染到 img 标签。

import { useState, useEffect } from 'react';

function ImageComponent() {
  const [imageUrl, setImageUrl] = useState(null);

  useEffect(() => {
    fetch('https://your-api-endpoint.com/image')
      .then(response => response.blob())
      .then(blob => {
        const url = URL.createObjectURL(blob);
        setImageUrl(url);
      });
  }, []);

  return (
    <div>
      {imageUrl && <img src={imageUrl} alt="Fetched from backend" />}
    </div>
  );
}

使用 Axios 获取图片

Axios 可以更简洁地处理二进制响应,通过设置 responseType: 'blob' 直接获取 Blob 对象。

react如何从后端获取图片

import axios from 'axios';
import { useState, useEffect } from 'react';

function AxiosImage() {
  const [imageSrc, setImageSrc] = useState('');

  useEffect(() => {
    axios.get('https://your-api-endpoint.com/image', {
      responseType: 'blob'
    }).then(response => {
      const url = URL.createObjectURL(response.data);
      setImageSrc(url);
    });
  }, []);

  return <img src={imageSrc} alt="Axios fetched image" />;
}

处理 Base64 编码图片

如果后端返回的是 Base64 字符串,直接将其作为 src 使用。

function Base64Image({ base64String }) {
  return <img src={`data:image/jpeg;base64,${base64String}`} alt="Base64" />;
}

添加请求头验证

需要认证的接口,可在请求头中添加 Authorization 或其他必要字段。

react如何从后端获取图片

fetch('https://protected-api.com/image', {
  headers: {
    'Authorization': 'Bearer your_token_here'
  }
})
.then(response => response.blob())
.then(blob => {
  const url = URL.createObjectURL(blob);
  // 使用 url 更新状态
});

清理对象 URL

为避免内存泄漏,在组件卸载时释放创建的 URL。

useEffect(() => {
  let objectUrl;
  fetch('https://api.com/image')
    .then(res => res.blob())
    .then(blob => {
      objectUrl = URL.createObjectURL(blob);
      setImageUrl(objectUrl);
    });

  return () => {
    if (objectUrl) URL.revokeObjectURL(objectUrl);
  };
}, []);

错误处理

添加错误处理逻辑应对网络请求失败或无效响应。

fetch('https://api.com/image')
  .then(response => {
    if (!response.ok) throw new Error('Network response was not ok');
    return response.blob();
  })
  .then(blob => {
    const url = URL.createObjectURL(blob);
    setImageUrl(url);
  })
  .catch(error => {
    console.error('Fetch error:', error);
  });

标签: 后端图片
分享给朋友:

相关文章

h5实现全景图片

h5实现全景图片

H5 实现全景图片的方法 使用 Three.js 库 Three.js 是一个强大的 3D 库,可以用于创建全景图片效果。以下是一个简单的实现步骤: 引入 Three.js 库 <scri…

jquery 图片

jquery 图片

jQuery 图片操作 jQuery 提供了多种方法来操作图片,包括加载、显示、隐藏、调整尺寸等。以下是一些常见的图片操作方法: 动态加载图片 使用 attr() 方法可以动态修改图片的 src 属…

vue实现图片循环

vue实现图片循环

实现图片循环展示 在Vue中实现图片循环展示可以通过v-for指令结合数组数据完成。以下是具体实现方式: 基础循环展示 准备图片数据数组,使用v-for渲染图片列表: <template&g…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…

vue实现图片切换

vue实现图片切换

实现图片切换的方法 使用v-for和v-bind动态绑定图片 通过v-for循环渲染图片列表,结合v-bind动态绑定图片路径,实现切换效果。 <template> <div&…

vue 实现图片切换

vue 实现图片切换

实现图片切换的基本思路 在Vue中实现图片切换通常涉及数据绑定、事件处理和动态样式。核心是通过维护一个当前图片索引的状态,利用Vue的响应式特性更新显示的图片。 数据准备与绑定 定义一个数组存储图片…