javascript - 来自 localStorage url 的图像返回 [object ArrayBuffer]
问题描述
我尝试使用本地存储来加速我的网站加载图像和音频文件,所以我使用 java 脚本设置我的 Pic 文件,如下所示:
var req = new XMLHttpRequest();
req.onload = function (e) {
var arraybuffer = oReq.response;
}
req.open("GET", '/zTest.jpg');
req.responseType = "arraybuffer";
req.send();
req.addEventListener('readystatechange', function () {
if (req.readyState === 4) {
localStorage.setItem('photo', req.response);
}
});
在其他页面中,我使用此代码返回我的文件
var img = new Image();
img.src = localStorage.photo;
$('.imagearea').html(img);
但它不会像这样显示 Pic 和我的 img src:
<img src="[object ArrayBuffer]">
注意:我知道本地存储文件的大小最小为 5 Mb
解决方案
保存的图像数据是一个 ArrayBuffer,因此我们首先需要创建一个物理图像,然后才能将其附加到 img 标签中。
let arrayBufferView = new Uint8Array( localStorage.photo );
let blob = new Blob( [ arrayBufferView ], { type: "image/jpeg" } );
let urlCreator = window.URL || window.webkitURL;
let imageUrl = urlCreator.createObjectURL( blob );
let img = new Image();
img.src = imageUrl;
$('.imagearea').html(img);
推荐阅读
- javascript - 使用 1 个属性问题键入 keyof 对象
- php - gc_mem_caches() 真的释放了内存吗?
- angular - 如何在Angular中指定路由参数的类型
- python - Python删除列表元素问题
- c# - 如何在面板顶部画一条线。使用“屏幕空间叠加”画布
- php - 查看以逗号分隔的图像到php
- elasticsearch - elasticsSearch:仅当查询的全文在字段中时才匹配
- node.js - 使用插入符号 (^) 或波浪号 (~) 时 NPM 版本不匹配
- python-3.x - 通过循环对类执行自动方法生成的装饰器:所有方法似乎都使用相同的确切输入,但不应该
- java - 在 Spark 中将列中的行转换为 LocalDate