最近在做一个上传的功能,上传之后后台判断如果文件有问题,则返回标注了错误信息的文件,然后自动下载成文件,因此涉及到了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) //输出文字
}