我想了解在需要的时间点文件 blob 的内容实际上被读入 RAM。
我将使用以下场景,其中用户只需从磁盘中选择本地图像。随后将显示图像。
const [fileHandle] = await showOpenFilePicker(); // (1)
const file = await fileHandle.getFile(); // (2)
const imgUrl = URL.createObjectURL(file) // (3)
document.getElementById("img").src = imgUrl; // (4)
我问的原因是我的具体用例这里。当对来自慢速网络驱动器的大量图像执行上述步骤时,我观察到,在上述代码完成运行后,该 blob 似乎不在 RAM 中(图像需要一段时间才能显示,并且在Chrome 开发者工具中的“源”选项卡)。
真的很想了解那里到底发生了什么 - 谢谢大家!
这不是一个明确的答案,但我测试了它并且......
URL.createObjectURL(file)
无法加载图像,至少在 chrome 中无法加载
const [fileHandle] = await showOpenFilePicker();
const file = await fileHandle.getFile();
const imgUrl = URL.createObjectURL(file)
document.getElementById("img").src = imgUrl;
net::ERR_FILE_NOT_FOUND
错误当我跳过第三点时,图像按预期加载
看起来
URL.createObjectURL(file)
将文件的路径保存在硬盘上。或者至少看起来像这样