当前位置:首页 > 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 中实现图片加载和展示可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind 绑定图片路径 通过 v-bind(或简写为 :)动态绑定图片的…

vue实现图片取色

vue实现图片取色

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

css3手工制作图片

css3手工制作图片

使用CSS3手工制作图片 CSS3可以通过各种属性如box-shadow、border-radius、gradient等来手工绘制简单的图形或图片效果。以下是几种常见的方法: 绘制圆形 通过bord…

vue实现组件循环图片

vue实现组件循环图片

Vue 实现组件循环图片的方法 在 Vue 中实现组件循环图片通常可以通过 v-for 指令结合动态数据绑定完成。以下是几种常见的实现方式: 使用静态图片路径数组 假设有一组本地图片路径,可以通过数…

vue文件下载后端实现

vue文件下载后端实现

Vue 文件下载后端实现 在 Vue 项目中实现文件下载功能通常需要前后端配合。后端主要负责生成文件并提供下载接口,前端通过调用接口触发下载。以下是常见的后端实现方法(以 Node.js/Expres…

h5实现图片压缩

h5实现图片压缩

使用Canvas API压缩图片 HTML5的Canvas API可以通过调整画布尺寸和图像质量来实现图片压缩。创建一个Canvas元素,将图片绘制到Canvas上,再通过toDataURL或toBl…