您当前的位置:首页 > 互联网教程

手机浏览器浏览blob文件流(xlsx)

发布时间:2025-05-23 17:44:53    发布人:远客网络

手机浏览器浏览blob文件流(xlsx)

一、手机浏览器浏览blob文件流(xlsx)

1、js导出xlsx文件,以文件流形式传到前端,转化成blob类型,然后通过fileSaver转化成Excel文件,

2、一切看起来都很简单,用电脑浏览器导出的时候也很顺利,但是再用ipad导出的时候却出现空页面,用google浏览器,导出的时候甚至没有任何反应

3、原因就是这个blob的type是个空字符串,查一下MIME type,将这个type替换成对应的MIME type即可正常导出

二、后端如何返回blob对象

1、使用jdk中的方法进行传输。在ResultSet中有getBlob()方法,在PreparedStatement中有setBlob()方法,所以大多数人都会尝试setBlob。

2、js没有所谓byte,只有一个ArrayBuffer,而且ArrayBuffer又不能通过http传递。要么你是用ajax的response直接获取blob对象的,要么你从服务器返回的是base64编码的字符串,js自己再decode然后转化成ArrayBuffer得到blob对象。

3、Blob对象的slice方法使用三个参数,均为可选参数,如果三个参数均省略时,相当于把一个Blob对象中的原始二进制数据原样复制到一个新建的Blob对象(即slice方法的返回值)中。

4、Blob对象的slice方法的第一个参数start的参数值为一个整数值,代表起始复制位置在Blob对象所代表的原始二进制数据中的位置,当start参数值为0时代表从该数据的起始位置(即第一个字节)开始复制数据;如果start参数值为负数值且Blob对象的size属性值+start参数值大于等于0。

5、则起始复制位置为Blob对象的size属性值+start参数值;如果start参数值为负数值且Blob对象的size属性值+start参数值小于0,则起始复制位置为Blob对象所代表的原始二进制数据的起始位置;如果start参数值为正数值且大于等于Blob对象的size属性值。