setaudioBlob(dataurl, name) {
fetch(dataurl)
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.blob();
})
.then(blob => {
let reader = new FileReader();
reader.onloadend = function () {
let base64data = reader.result; // 这里得到的是一个"data:*/*;base64,..."格式的字符串
// 存储到localStorage
localStorage.setItem(name, base64data);
};
reader.readAsDataURL(blob);
})
.catch(error => {
console.error('Error', error);
});
},
getaudioBlob(name) {
let base64data = window.localStorage.getItem(name)
// 分离出MIME类型和实际的Base64内容
let dataParts = base64data.split(';base64,');
let contentType = dataParts[0].split(':')[1];
let base64String = dataParts[1];
// 将Base64字符串转换回Blob
let decodedData = window.atob(base64String);
let arrayBuffer = new ArrayBuffer(decodedData.length);
let uint8Array = new Uint8Array(arrayBuffer);
for (let i = 0; i < decodedData.length; i++) {
uint8Array[i] = decodedData.charCodeAt(i);
}
let restoredBlob = new Blob([uint8Array], { type: contentType });
return restoredBlob
// let audioElement = new Audio(URL.createObjectURL(restoredBlob));
// audioElement.play().catch(error => console.error(error));
},,我是mp3文件,我理解是只要浏览器能正常播放wav,转化播放应该没啥问题
断网播放声音?
在网络连接的时候加载audio,然后在断网的时候播放音频,希望他走缓存,就很奇怪,有时候可以走缓存,有时候不行,请求接口,但是是脱机状态就请求失败,怎么设定缓存永久,一直走缓存,不重新请求接口
他会走个这个,启动器也看不到
转base64后存localstorage了