后端接口返回图片(数据流)前端怎么处理(ArrayBuffer转base64)【包含PC以及小程序】

这篇具有很好参考价值的文章主要介绍了后端接口返回图片(数据流)前端怎么处理(ArrayBuffer转base64)【包含PC以及小程序】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一步 修改api封装

export function post(url, data = {}, config = {}) {
  const userInfo = store.state.userInfo

  const wrapData = {
    head: {
      userId: userInfo.brandId,
    },
    con: data,
    responseType: config.responseType || 'text', // 主要为了修改这个 responseType
  }
 }
	// 添加config
	export function getConsumQrCode(params, config) {
	  return post('/jackpot/jackpotInfo/getConsumQrCode', params, config)
	}

第二步 页面应用

1.微信小程序做法:

	//  页面中调用方法  传递config  使用uniapp 的API uni.arrayBufferToBase64
	//  将返回的 ArrayBuffer值 转换为 base64 格式
    async getData() {
   	  // 第一个{} 代表params  第二个{} 代表 config
      const res = await getConsumQrCode({
        recordId: 1,
      }, {
        responseType: 'arrayBuffer',
      })
      this.imgUrl = `data:image/png;base64,${uni.arrayBufferToBase64(res)}`
    },
      <img
        :src="imgUrl"
      >

2.PC做法:

  修改为 arraybuffer后, 后端返回的res肯定是乱码 - 数据流
  转换位 Blob 对象,用法参考MDN
  然后使用window的createObjectURL将Blob对象转换为url
  最后直接在img的src上使用

MDN-前端必看网站

    async getImg() {
      const res = await getCodeImg({}, {
        responseType: 'arraybuffer',
      })
      const img = new Blob([res], { type: 'image/png' })
      this.imgUrl = window.URL.createObjectURL(img)
    },

#最后如果axios的封装时有封装响应拦截器,如下:

axios.interceptors.response.use((response) => {
 	// 这个判断会出问题 因为后端返回的值是乱码  所以 response.data.head 是没有的
 	//所以也就捕捉不到接口是失败还是成功
  if (response.data.head?.status !== 0) {
    return createApiError({
      url: response?.config.url,
      response,
      message: response.data.head.msg,
      code: response.data.head.status,
    })
  }
  return response
}, async (error) => {
  return createApiError({
    error,
    url: error?.config?.url,
    message: error?.errMsg,
  })
})

要给这个if判断的条件做补充

axios.interceptors.response.use((response) => {
  if (response.data.head?.status !== 0 && response.headers['content-type'].includes('application/json')) {
    return createApiError({
      url: response?.config.url,
      response,
      message: response.data.head.msg,
      code: response.data.head.status,
    })
  }
  return response
}, async (error) => {
  return createApiError({
    error,
    url: error?.config?.url,
    message: error?.errMsg,
  })
})

完成,如果有用,请赏一个赞!

这里放axios官网的请求配置中 responseType 可选值参考(封装axios必须了解)
axios官网地址
接口直接返回一个图片 前端怎么弄,前端,微信小程序,javascript文章来源地址https://www.toymoban.com/news/detail-623550.html

到了这里,关于后端接口返回图片(数据流)前端怎么处理(ArrayBuffer转base64)【包含PC以及小程序】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 实时数据处理:数据流的安全与隐私

    实时数据处理在现代大数据环境中具有重要意义。随着互联网的普及和人们对数据的需求不断增加,实时数据处理技术已经成为了企业和组织的核心技术之一。然而,随着数据处理技术的不断发展,数据流的安全与隐私也成为了一个重要的问题。在这篇文章中,我们将深入探

    2024年02月20日
    浏览(43)
  • 数据流处理框架Flink与Kafka

    在大数据时代,数据流处理技术已经成为了一种重要的技术手段,用于处理和分析大量实时数据。Apache Flink和Apache Kafka是两个非常重要的开源项目,它们在数据流处理领域具有广泛的应用。本文将深入探讨Flink和Kafka的关系以及它们在数据流处理中的应用,并提供一些最佳实践

    2024年04月23日
    浏览(34)
  • 云计算与大数据处理:实时计算与数据流

    云计算和大数据处理是当今信息技术领域的两个热门话题。随着互联网的普及和人们生活中的各种设备的不断增多,我们生活中的数据量不断增加,这些数据需要存储和处理。云计算是一种基于互联网的计算资源共享和分配模式,可以让用户在需要时轻松获取计算资源,从而

    2024年04月13日
    浏览(36)
  • 软件定义汽车场景中的数据流处理

    在当今快速发展的技术环境中,汽车行业正处于变革期。软件定义汽车(Software-Defined Vehicle, SDV)处于这场变革的前沿,为用户提供了无与伦比的互联、智能和数据洞察。SDV 会产生海量的数据,如何实时高效的处理这些数据成为当务之急。 本文将深入分析 SDV 数据的流处理技

    2024年02月13日
    浏览(32)
  • 数据流处理中的分布式存储:保护数据隐私和安全

    作者:禅与计算机程序设计艺术 随着数据量的爆炸式增长,如何高效地处理和存储数据成为了当前热门的研究方向。数据流处理作为一种处理数据的方法,能够在实时性、流式性和可扩展性等方面提供优势。在数据流处理中,分布式存储是保障数据隐私和安全的重要手段。本

    2024年02月16日
    浏览(31)
  • 前端向Java后端请求blob、arraybuffer类型的数据流

    前端需要获取后端音频文件,但遇到跨域问题,不能直接使用url获取,需求必须使用流将文件传到前端。因此,考虑Java后端读取音频文件,然后向前端发送数据流,前端按后端发送类型将数据接收,并合成其格式文件。 引入axios.min.js文件 其中,responseType:‘arraybuffer’,写成

    2024年02月13日
    浏览(46)
  • [Java 探索之路~大数据篇] 新时代大数据流处理入门指南

    本文主要介绍大数据基础,以及 flink 流计算 1.批处理 批处理(Batch Processing)是指对一批数据进行处理。我们身边的批处理比比皆是,最常见的批处理例子有:微信运动每天晚上有一个批处理任务,把用户好友一天所走的步数统计一遍,生成排序结果后推送给用户;银行信用

    2024年03月10日
    浏览(43)
  • 实时数据流无忧:用 SpringBoot 和 SSE 打造动态前端更新的终极指南

    你知道什么是开发者的梦魇吗?慢!慢!慢!在一个需要实时数据更新的应用中,如果数据像乌龟一样慢吞吞地爬行,那用户体验就会像坐过山车一样直线下降。所以今天,我们要化身为数据传输的超级英雄,用 SpringBoot 和 SSE(服务器发送事件)打造一个超酷、超快、而且超

    2024年02月02日
    浏览(33)
  • ClickHouse 与 Kafka 整合: 实时数据流处理与分析解决方案

    随着数据量的不断增长,实时数据处理和分析变得越来越重要。ClickHouse 和 Kafka 都是在现代数据技术中发挥着重要作用的工具。ClickHouse 是一个高性能的列式数据库,专为 OLAP 和实时数据分析而设计。Kafka 是一个分布式流处理平台,用于构建实时数据流管道和流处理应用程序

    2024年02月22日
    浏览(43)
  • 实时大数据流处理技术:Spark Streaming与Flink的深度对比

    引言 在当前的大数据时代,企业和组织越来越多地依赖于实时数据流处理技术来洞察和响应业务事件。实时数据流处理不仅能够加快数据分析的速度,还能提高决策的效率和准确性。Apache Spark Streaming和Apache Flink是目前两个主要的实时数据流处理框架,它们各自拥有独特的特

    2024年03月10日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包