在Vue中处理接口返回的二进制图片数据

🌟 前言

欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍

  • 🤖 洛可可白:个人主页

  • 🔥 个人专栏:✅前端技术 ✅后端技术

  • 🏠 个人博客:洛可可白博客

  • 🐱 代码获取:bestwishes0203

  • 📷 封面壁纸:洛可可白wallpaper

在这里插入图片描述

文章目录

  • 在Vue中处理接口返回的二进制图片数据
    • 摘要
    • 1. 问题分析
      • 1.1 环境检查
      • 1.2 问题描述
    • 2. 接口对接
      • 2.1 添加接口返回头
      • 2.2 请求数据示例
      • 2.3 使用`bufferUrl`和`btoa`函数
    • 3. 全部代码
    • 结语

在Vue中处理接口返回的二进制图片数据

摘要

在现代Web开发中,前端应用经常需要从后端接口获取图片数据。有时,这些图片数据以二进制格式返回,而不是常见的Base64编码。本文将指导你如何在Vue应用中处理这类二进制图片数据,并将其正确地显示在页面上。

1. 问题分析

1.1 环境检查

确保你的Vue项目能够正常发起网络请求,并且后端接口的跨域设置是正确的。如果需要,可以参考这篇文章洛可可白⚡️axios网络请求配置。

1.2 问题描述

当后端接口返回的响应类型为application/octet-streamimage/png等二进制格式时,我们需要特殊处理这些数据。

在这里插入图片描述

2. 接口对接

2.1 添加接口返回头

在axios请求中,我们需要指定responseTypearraybuffer,以便接收二进制数据。

// 使用axios获取二进制数据
request.get("/commonEntity/generateImageCode", {responseType: "arraybuffer",
}).then((res) => {console.log(res.data); // 二进制数据
});

2.2 请求数据示例

接口返回的二进制数据通常是一个ArrayBuffer对象。

在这里插入图片描述

2.3 使用bufferUrlbtoa函数

为了将二进制数据转换为Base64编码,我们可以使用btoa函数。然后,我们可以将Base64编码的字符串作为图片的src属性。

import request from "@/request";
import { onMounted, ref } from "vue";const imgSrc = ref('');onMounted(() => {request.get("/commonEntity/generateImageCode", {responseType: "arraybuffer",}).then((res) => {// 将ArrayBuffer转换为Base64编码的字符串const buffer = new Uint8Array(res);const base64String = btoa(buffer.reduce((data, byte) => data + String.fromCharCode(byte), ""));imgSrc.value = "data:image/png;base64," + base64String;});
});

3. 全部代码

以下是一个完整的Vue组件示例,展示了如何获取二进制图片数据并将其显示在页面上。

<template><img :src="imgSrc" alt="二进制图片">
</template><script setup lang="ts">
import request from "@/request";
import { onMounted, ref } from "vue";// 定义响应式引用imgSrc
const imgSrc = ref('');// 在组件挂载后发起请求
onMounted(() => {// 发起请求并处理二进制数据request.get("/commonEntity/generateImageCode", {responseType: "arraybuffer",}).then((res) => {// 将二进制数据转换为Base64编码const buffer = new Uint8Array(res);const base64String = btoa(buffer.reduce((data, byte) => data + String.fromCharCode(byte), ""));// 更新imgSrc的值为Base64编码的图片URLimgSrc.value = "data:image/png;base64," + base64String;});
});
</script>

结语

通过本文的教程,你应该能够理解如何在Vue应用中处理接口返回的二进制图片数据。这个技能对于处理各种类型的API响应非常有帮助,尤其是在前后端分离的开发模式中。记得在实际项目中根据实际情况调整代码,以适应不同的接口和数据格式。

感谢你的访问,期待与你在技术的道路上相遇!👋🌟🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/522726.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flink实战--Flink任务资源自动化优化

背景 在生产环境Flink任务资源是用户在实时平台端进行配置,用户本身对于实时任务具体配置多少资源经验较少,所以存在用户资源配置较多,但实际使用不到的情形。比如一个 Flink 任务实际上 4 个并发能够满足业务处理需求,结果用户配置了 16 个并发,这种情况会导致实时计算资…

清华大学1748页CTF竞赛入门指南,完整版开放下载!

CTF是一种针对信息安全领域的经济性挑战&#xff0c;旨在通过解决一系列的难题来寻找隐藏的“flag”。CTF比赛战队一般是以高校、科研单位、企业、信息安全从业者或社会团体组成。对于网安爱好者及从业者来说&#xff0c;拥有“CTF参赛经验”也是求职中的加分项。 前几天分享的…

react的diff源码

react 的 render 阶段&#xff0c;其中 begin 时会调用 reconcileChildren 函数&#xff0c; reconcileChildren 中做的事情就是 react 知名的 diff 过程 diff 算法介绍 react 的每次更新&#xff0c;都会将新的 ReactElement 内容与旧的 fiber 树作对比&#xff0c;比较出它们…

力扣刷题Days13--翻转二叉树(js)

目录 1,题目 2&#xff0c;代码 2.1递归思想-深度优先遍历 2.2迭代-广度优先遍历 3&#xff0c;学习与总结 1,题目 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 2&#xff0c;代码 2.1递归思想-深度优先遍历 我们从根节点开始&…

Pytorch_lightning先前版本的官方文档地址

https://lightning.ai/docs/pytorch/1.4.2/https://lightning.ai/docs/pytorch/1.4.2/ Pytorch_lightning更新到2后&#xff0c;和之前版本的变化较大&#xff0c;以前原有的api被删除了 比如&#xff1a;on_pretrain_routine_start 官方也没有在显眼的位置放置先前版本的文档…

成都源聚达:抖音电商创业卖什么好

在抖音这个充满活力的平台上&#xff0c;选择何种商品进行电商创业是许多创业者思考的问题。要在这竞争激烈的市场中脱颖而出&#xff0c;选品策略需细致入微&#xff0c;紧跟潮流同时具备前瞻性。 应考虑的是产品与平台的契合度。抖音以短视频著称&#xff0c;因此&#xff0c…

【操作系统概念】 第9章:虚拟内存管理

文章目录 0.前言9.1 背景9.2 按需调页9.2.1 基本概念9.2.2 按需调页的性能 9.3 写时复制9.4 页面置换9.4.1 基本页置换9.4.2 FIFO页置换9.4.3 最优(Optimal)置换9.4.4 LRU&#xff08;Least Recently Used&#xff09;页置换9.4.5 近似LRU页置换9.4.6 页缓冲算法 9.5 帧分配9.5…

CDR软件最新2024中文版发布更新,新功能抢先看

2024年3月5日&#xff0c;CorelDRAW Graphics Suite 2024正式在全球发布&#xff0c;这是CorelDRAW在长达36年的创意服务历程中的又一标志性成就&#xff0c;与此同时&#xff0c;作为CorelDRAW长期合作伙伴的思杰马克丁软件有限公司也推出了CorelDRAW 2024的中文版本。 感兴趣…

mysql 8.0 日志文件无权限问题处理

无论如何修改权限总是报这个日志文件权限问题。 解决方法 输入指令&#xff1a; setenforce 0 systemctl restart mysgld

2024最新版短剧小程序

仿抖音滑动小短剧影视微信小程序源码&#xff0c;带支付收益等模式、支持无限滑动&#xff1b;高性能滑动、预加载、视频预览&#xff0c;支持剧情介绍&#xff0c;集合壁纸另外仿抖音滑动效果&#xff1b;支持会员模式&#xff0c;支持用户单独购买等等多功能。 丰富的后台设…

数据结构与算法-插值查找

引言 在计算机科学的广阔天地中&#xff0c;数据结构和算法扮演着至关重要的角色。它们优化了信息处理的方式&#xff0c;使得我们在面对海量数据时能够高效、准确地进行检索与分析。本文将聚焦于一种基于有序数组且利用元素分布规律的查找算法——插值查找&#xff08;Interpo…

电商API 接口列表|包含淘宝|京东|1688商品接口

电商API 接口列表 整理了一些 API 接口&#xff0c;可以用于 Vue、React、UniApp、微信小程序等项目实践练习。 为了方便调用&#xff0c;大多使用GET方式请求&#xff0c;传参采用混合 params 和 query方式。 所有接口仅供学习交流使用&#xff0c;不保证实时更新&#xff0c;…