当前位置:首页 > 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中实现图片拖拽功能可以通过HTML5的拖放API结合Vue的事件处理来完成。以下是一个完整的实现方法: 基础拖拽实现 为图片元素添加draggable属性并绑定相关事件:…

css图片按钮制作

css图片按钮制作

使用纯CSS创建图片按钮 通过CSS的background-image属性可以轻松将图片设置为按钮背景。关键点在于设置合适的尺寸、去除默认边框并添加交互状态: .image-btn { widt…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('imag…

vue实现图片

vue实现图片

Vue 实现图片展示的方法 在 Vue 中实现图片展示可以通过多种方式完成,以下是一些常见的方法: 使用 img 标签直接引入 通过 img 标签的 src 属性直接引入本地或远程图片: &l…

vue实现图片编辑

vue实现图片编辑

Vue实现图片编辑的方法 使用第三方库vue-cropper 安装vue-cropper库: npm install vue-cropperjs 在Vue组件中使用: <template&g…

vue图片实现旋转

vue图片实现旋转

使用 CSS transform 实现图片旋转 在 Vue 中可以通过 CSS 的 transform 属性实现图片旋转效果。创建一个数据属性控制旋转角度,通过绑定样式动态更新。 <temp…