geo*_*zip 0 javascript opera xmlhttprequest xmlhttprequest-level2
这个问题是关于IE到Opera 12浏览器的StackOverflow问题的扩展.
根问题是geoxml3处理kmz(压缩的kml)文件中的问题.
正在使用ZipFile.complete.js的修改版本中的TypedArrays处理二进制数据
传输二进制文件后,在Opera 12中未正确填充Uint8Array,就好像数据被导入为16位元素一样.
请求配置如下:
this.req.responseType = 'arraybuffer';
this.req.overrideMimeType('text/plain; charset=x-user-defined');
Run Code Online (Sandbox Code Playgroud)
返回的值如下处理:
var fileContents = binStream.req.response;
binStream.length = fileContents.byteLength;
binStream.array = new Uint8Array(fileContents);
Run Code Online (Sandbox Code Playgroud)
在Opera 12中,前八个字节的填充如下:
0x004B0050; 给出十进制值4915280
但应该是:
0x4034B50; 小数值67324752.
这在Firefox,Chrome和IE中正常工作(具有解决方法).
有谁知道我怎么能说服Opera 12正确填充Uint8Array?或者一个解决方法,以便它可以工作(某种方式将16位字节数组转换为8位字节数组,尽可能有效地丢弃不需要的高8位)?这是Opera 12中最近实现TypedArray/XmlHttpRequest的已知错误吗?
Opera 12.00引入了支持responseType; 不幸的是,它有一个错误,这意味着给定一个text/*MIME类型,你将文件结束为16位字.它在12.01中修复,但最简单的解决方法是将覆盖类型设置为application/octet-stream.(这是CORE-46938,对于那些想要跟踪一个封闭的bug追踪器的人来说.)