返回数据为arraybuffer的处理

最近在做一个上传的功能,上传之后后台判断如果文件有问题,则返回标注了错误信息的文件,然后自动下载成文件,因此涉及到了arraybuffer

首先,请求时的responseType的值设为arraybuffer,但是注意,这会引起一个问题,返回结构的data中所有内容都会是这种格式,包括json和字符串,因此,如果是其他的报错信息,也无法按之前的方式打印。

后台的标志位都无法获取,无法区分是否正确,因此,跟后台协商,添加请求头参数(或者修改请求头参数),通过请求头参数来判断正确错误。

数据处理:

1、文件格式信息

  let blob = new Blob([接收到的数据],{type: 'application/文件格式'})    一定要加[]

  然后创建a标签,设置路径(window.URL.createObjectURL(blob)),用.download设置文件名称,然后通过.click()来自动下载

2、文字信息

  let blob = new Blob([接收到的数据])

  然后使用fileReader对象进行数据转换和输出

  let reader = new FileReader()

  reader.readAsText(blob, 'utf-8')

  reader.onload = function() {

    console.log(reader.result)        //输出文字

  }

 

上一篇:在xmlHTTPrequest send()之后从PHP $_POST访问ArrayBuffer


下一篇:ES6中ArrayBuffer与计算机字节序