XMLHttpRequest 中 blob类型数据转text
Posted 一个帅哥9527
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XMLHttpRequest 中 blob类型数据转text相关的知识,希望对你有一定的参考价值。
场景描述:ajax接收的数据类型既有blob类型也有text时,不同的类型做不同的处理。如,当下载文件、图片等信息时候,需要字节流responseType = ‘blob‘,同时,如果后台有出错信息需要前台展示,此时需要字符类型responseType = ‘text‘。两个类型不能同时存在。
解决方案:都用blob类型接收,然后将blob类型转text类型
实施:blob类型无法直接转text类型,需要中间转换
var blob = xhr.response; //xhr.response -->blob 数据源 if(blob.size < 100){ //此处是用来区分后台的数据源是文件、图片流,还是我们的告警信息,(如果是告警信息,size会很短) var fr = new FileReader(); //FileReader可以读取Blob内容 fr.readAsText(blob); //二进制转换成text fr.onload = function (e) { //转换完成后,调用onload方法 var result = fr.result; //result 转换的结果
---------------------------------------------------------分隔线-----------------------------------------------------------------------------
知识点:
Ajax和XMLHttpRequest: ajax是一种技术方案,但并不是一种新技术。它依赖的是现有的CSS/html/javascript,而其中最核心的依赖是浏览器提供的XMLHttpRequest对象,是这个对象使得浏览器可以发出HTTP请求与接收HTTP响应
FileTeader:用来把文件读入内存,并且读取文件中的数据。
以上是关于XMLHttpRequest 中 blob类型数据转text的主要内容,如果未能解决你的问题,请参考以下文章
XMLHttpRequest.send()发送Blob二进制数据,serverlet中如何接收?
带有 Blob URL 的 404 的 XMLHttpRequest 状态