目的是http请求svga图 保存到本地 再次加载直接读取本地的
function blobtoStr(blob,fn){
var reader = new FileReader();
reader.readAsText(blob, 'utf-8');
reader.onload = function (e) {
fn(reader.result)
}
}
var o = new XMLHttpRequest;
let name = e.split('&&')[0]
let ht = e.split('&&')[1]
console.log(e)
console.log('网下载',name,ht, e.split('&&'))
o.open("GET", ht, !0), o.responseType = "blob", o.onloadend = function() {
//#ifdef APP-PLUS
console.log('网下载完毕')
console.log(name)
console.log(typeof o.response)
blobtoStr(o.response,(e)=>{
console.log('缓存完毕')
console.log(typeof e)
plus.storage.setItem(name,e)
})
u._readBlobAsArrayBuffer(o.response, function(e) {
var i = new Uint8Array(e, 0, 4);
80 == i[0] && 75 == i[1] && 3 == i[2] && 4 == i[3] ?
JSZip.loadAsync(e).then(function(e) {
u._decodeAssets(e, t)
}) : u.load_viaProto(e, t, r)
});
// let _dat = u._readBlobAsArrayBuffer(new Blob([o.response],{type: "arraybuffer"});)
// // #endif
// u.load_viaProto(_dat, t, r)
}, o.send()
上面是通过http获取的文件 报错到本地 然后进行了渲染,这时候没有问题
// buffter值
let buffter = plus.storage.getItem(domeId)
if(buffter){
console.log('存在缓存')
//将字符串转换成 Blob对象
filePath = new Blob([buffter], {
type: 'application/octet-stream'
});
}
// #endif
if(typeof filePath=='string'){
filePath = domeId+'&&'+filePath
}
console.log(typeof filePath)
取出string类型的blob 转回blob类型
u._readBlobAsArrayBuffer(e, function(e) {
var i = new Uint8Array(e, 0, 4);
if(80 == i[0] && 75 == i[1] && 3 == i[2] && 4 == i[3]){
JSZip.loadAsync(e).then(function(e) {
u._decodeAssets(e, t)
})
} else{
u.load_viaProto(e, t, r)
}
});
上面代码加载就出现了错误
16:28:07.750 incorrect header check at static/svga.min.js:2626
16:28:07.775 Uncaught incorrect header check at static/svga.min.js:2626
16:28:07.798 incorrect header check at static/svga.min.js:2626
16:28:07.824 Uncaught incorrect header check at static/svga.min.js:2626
0 个回复