vue如何获取图片流数据并展示

 更新时间:2023年09月26日 10:55:35   作者:程序员的脱发之路  
这篇文章主要介绍了vue如何获取图片流数据并展示问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、问题描述

该场景适用于所有后端传递图片流数据给前端的情形

比如说当我们在做登录验证是,我们可能需要从后端获取验证码,这是后端传递给你的可能是一个图片数据而不是验证码数字。

接口回参:

打印一下:

二、数据获取

如果我们在请求接口获取数据时不指定返回数据类型的话,我们获取到的可能就是一堆乱码数据。

因此我们在axios接口请求里面指定responseType为blob

再打印一下:

这就获得一个封装好的blob类型数据了

三、数据展示

获取到数据之后要用img标签进行展示,img标签的src需要直接指向blob数据的话是没有用的,所以我们要创建一个url来指向的的blob数据,然后将url赋给img的src属性。

1.window.URL.createObjectURL()

(1)URL

URL接口用于解析,构造,规范化和编码 URLs。

它通过提供允许您轻松阅读和修改URL组件的属性来工作。

通常,通过在调用URL的构造函数时将URL指定为字符串或提供相对URL和基本URL来创建新的URL对象。

然后,您可以轻松读取URL的已解析组成部分或对URL进行更改。

如果浏览器尚不支持URL()构造函数,则可以使用Window中的Window.URL属性。

确保检查您的任何目标浏览器是否要求对此添加前缀。

(2)createObjectURL

createObjectURL返回一个DOMString包含一个唯一的blob链接(该链接协议为以blob:,后跟唯一标识浏览器中的对象的掩码)。

2.封装blob数据

3.将url的值赋给img标签的src属性

四、最终结果

五、另一种方式(FileReader)

我们使用FileReader API也可以实现,不过我们是将file类型转换为base64编码,这样img标签就可以之间展示。

1.FileReader

FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。

其中File对象可以是来自用户在一个元素上选择文件后返回的FileList对象,也可以来自拖放操作生成的 DataTransfer对象,还可以是来自在一个HTMLCanvasElement上执行mozGetAsFile()方法后返回结果。

详细可见MDN的:FileReader

所以当后端传递一个file类型或者前端用户上传一个文件时,我们可以使用FileReader来进行处理

2.具体实现

        let reader = new FileReader(); // 创建FileReader()实例
        reader.onload = function (evt) { // 当文件读取完成时会执行onload事件
            //替换img标签的url
            $("#showImg1").attr("src", evt.target.result);
            console.log(evt.target.result); // evt.target.result就是图片文件的base64编码
        }
        reader.readAsDataURL(imgFile); // 读取imgFile文件

3.简单介绍

简单记录一下FileRender的具体事件以及方法:

(1)事件

  • FileReader.onabort :处理abort (en-US)事件。该事件在读取操作被中断时触发。
  • FileReader.onerror :处理error (en-US)事件。该事件在读取操作发生错误时触发。
  • FileReader.onload :处理load (en-US)事件。该事件在读取操作完成时触发。

(2)方法

  • FileReader.abort() :中止读取操作。在返回时,readyState属性为DONE。
  • FileReader.readAsArrayBuffer() :开始读取指定的 Blob中的内容, 一旦完成, result 属性中保存的将是被读取文件的 ArrayBuffer 数据对象.
  • FileReader.readAsBinaryString() :开始读取指定的Blob中的内容。一旦完成,result属性中将包含所读取文件的原始二进制数据。
  • FileReader.readAsDataURL() :开始读取指定的Blob中的内容。一旦完成,result属性中将包含一个data: URL格式的Base64字符串以表示所读取文件的内容。
  • FileReader.readAsText() :开始读取指定的Blob中的内容。一旦完成,result属性中将包含一个字符串以表示所读取的文件内容。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 在vue路由上添加公共的路由前缀方式

    在vue路由上添加公共的路由前缀方式

    这篇文章主要介绍了在vue路由上添加公共的路由前缀方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • vue实现点击隐藏与显示实例分享

    vue实现点击隐藏与显示实例分享

    在本篇文章中小编给大家分享了vue如何实现点击隐藏与显示的相关内容,有需要的朋友们跟着学习下。
    2019-02-02
  • vue3 定义使用全局变量的示例详解

    vue3 定义使用全局变量的示例详解

    全局变量(函数等)可以在任意组件内访问,可以当组件间的传值使用,这篇文章给大家介绍vue3 定义使用全局变量的示例详解,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • vue将毫秒数转化为正常日期格式的实例

    vue将毫秒数转化为正常日期格式的实例

    今天小编就为大家分享一篇vue将毫秒数转化为正常日期格式的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue数组根据对象属性去重和数组对象去重实现方式

    Vue数组根据对象属性去重和数组对象去重实现方式

    文章介绍了两种去重方法:一种是根据对象的`id`属性去重,另一种是根据`id`和`name`属性去重,通过`map()`和`filter()`方法结合`indexOf()`实现去重
    2025-12-12
  • Vue如何实现变量表达式选择器

    Vue如何实现变量表达式选择器

    这篇文章主要介绍了Vue如何实现变量表达式选择器,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下
    2021-02-02
  • 在Vue3中创建和使用自定义指令的实现方式

    在Vue3中创建和使用自定义指令的实现方式

    在现代前端开发中,Vue.js 是一个非常流行的框架,它提供了许多强大的功能来帮助开发者构建高效的用户界面,自定义指令是 Vue.js 的一个重要特性,它允许开发者扩展 HTML 元素的功能,本文将详细介绍如何在 Vue3 中创建和使用自定义指令,并提供示例代码来帮助理解
    2024-12-12
  • vue瀑布流组件实现上拉加载更多

    vue瀑布流组件实现上拉加载更多

    这篇文章主要为大家详细介绍了vue瀑布流组件实现上拉加载更多,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • vue3使用svg图标的多种方式总结

    vue3使用svg图标的多种方式总结

    svg图片在项目中使用的非常广泛,下面这篇文章主要给大家介绍了关于vue3使用svg图标的多种方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • Vue版本演进之Vue3、Vue2.7与Vue2全面详细对比

    Vue版本演进之Vue3、Vue2.7与Vue2全面详细对比

    随着前端技术的不断发展,各种框架应运而生,而Vue.js凭借其简洁、灵活的特性,成为了许多开发者的首选,这篇文章主要介绍了Vue版本演进之Vue3、Vue2.7与Vue2全面详细对比的相关资料,需要的朋友可以参考下
    2026-03-03

最新评论