当前位置:首页 > 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);
  });

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

相关文章

vue实现图片查看

vue实现图片查看

Vue 实现图片查看功能 在 Vue 中实现图片查看功能,可以通过原生实现或使用第三方库。以下是几种常见的方法: 原生实现方式 使用 Vue 的指令和事件绑定实现基础的图片查看功能。 <te…

vue实现图片取色

vue实现图片取色

Vue 实现图片取色功能 使用 Canvas API 提取颜色 在 Vue 项目中,可以通过 Canvas API 实现图片取色功能。创建一个组件,利用 ref 获取图片元素并绘制到 Canvas 上…

vue实现图片预览

vue实现图片预览

实现图片预览功能 在Vue中实现图片预览功能可以通过多种方式完成,常见的有使用原生HTML5的<dialog>元素、第三方库如viewer.js或vue-photo-preview,以及自…

vue实现放大图片

vue实现放大图片

实现图片放大功能的方法 在Vue中实现图片放大功能,可以通过多种方式实现。以下是几种常见的方法: 使用CSS transform属性 通过CSS的transform: scale()属性实现图片放…

react如何引入图片

react如何引入图片

在React中引入图片的方法 使用import直接引入 将图片文件放在项目src目录下(如src/images),通过ES6的import语法引入: import logo from './imag…

vue实现图片滚动

vue实现图片滚动

实现图片滚动的 Vue 组件 使用 Vue 实现图片滚动效果可以通过自定义组件或第三方库完成。以下是两种常见方法: 方法一:使用 CSS 动画和 Vue 动态绑定 通过 Vue 的 v-for 和…