设置“dataURL”的值超出了配额
Posted
技术标签:
【中文标题】设置“dataURL”的值超出了配额【英文标题】:Setting the value of 'dataURL' exceeded the quota 【发布时间】:2014-07-21 13:50:27 【问题描述】:我有一个将字符串保存到本地存储的 javascript 代码,字符串大小为 400000,
var dataURL = canvas.toDataURL("image/jpg").toString();
localStorage.setItem("dataURL", dataURL);
我从 chrome 打开 html 文件,在一台计算机上它在我得到的另一台计算机上正常
未捕获的 QuotaExceededError:无法执行“setItem” 'Storage': 设置 'dataURL' 的值超出配额。
在这台计算机上,我允许保存的字符串长度不超过 100000 个字符。 两台电脑都有相同的 chrome 版本 35.0.1916.114 m 为什么?
【问题讨论】:
可能是浏览器中设置的首选项、每台计算机上的可用磁盘空间或其他一些环境差异。 相关问题:***.com/questions/2989284/… 试试这个 try var count = 100; var message = "LocalStorageIsNOTFull"; for (var i = 0; i 【参考方案1】:当您的浏览器达到最大限制时,它会抛出此错误 无法在“存储”上执行“setItem”:设置“”的值超出了配额。
你可以这样处理 try
var count = 100;
var message = "LocalStorageIsNOTFull";
for (var i = 0; i <= count; count + 250)
message += message;
localStorage.setItem("stringData", message);
console.log(localStorage);
console.log(count);
catch (e)
console.log("Local Storage is full, Please empty data");
// fires When localstorage gets full
// you can handle error here or empty the local storage
【讨论】:
【参考方案2】:这种类型的错误也可能由于以下原因而发生:
在单个 localStorage 键中存储值是有限制的。
例如,如果我写 localStorage.setItem('data',allData); 那么 'data' 键有一个限制,它可以在 'allData' 值中存储指定数量的字符。
在 chrome 和 firefox 中,您最多可以在一个键中存储 5200000 个字符。您可以访问此网站https://arty.name/localstorage.html
查看浏览器限制因此,要解决此问题,您必须检查您尝试存储在单个键中的字符数。
如果您超出了 localStorage 键的值大小,则必须将大小减小到适当的限制。
【讨论】:
【参考方案3】:chrome 本地存储默认为 25M,因此请明确您的 chrome 本地存储是否可以使用。祝你好运!
【讨论】:
What is the max size of localStorage values?你错了。【参考方案4】:使用localStorage.clear();
清除本地存储对我有用。
如果您使用的是 Firefox,您可能需要使用 window.localStorage.clear();
【讨论】:
【参考方案5】:这取决于浏览器偏好和磁盘空间。在https://arty.name/localstorage.html 比较您的两台计算机的浏览器并检查它们是否存储相同的编号。的字符。你会看到区别。
【讨论】:
你说的是对的,但我给出了一个链接,可以证明我试图解释的内容。我不认为我们可以在这里运行代码 sn-p 来给出这些结果。或者有没有办法做到这一点?【参考方案6】:下面的代码可以让您在本地存储中保存最多的数据量,而不会在存储超出时清除它。
const setInLocalStorage = (keyName, value) =>
try
localStorage.setItem(keyName, JSON.stringify(value));
catch (error)
console.log('Error in local storage', error);
setInLocalStorage(keyName, JSON.parse(localStorage.getItem(keyName)));
;
【讨论】:
以上是关于设置“dataURL”的值超出了配额的主要内容,如果未能解决你的问题,请参考以下文章
Blob/DataURL/canvas/image的相互转换