获取Javascript中的最大数据Uri大小
我想将数据导出为数据URI,但前提是数据的大小不超过当前浏览器支持的数据URI的最大大小,并且该URI大于我要下载的文件获取Javascript中的最大数据Uri大小,javascript,data-uri,Javascript,Data Uri,我想将数据导出为数据URI,但前提是数据的大小不超过当前浏览器支持的数据URI的最大大小,并且该URI大于我要下载的文件 document.location.href= "data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,"+data 当文件太大时,这有时会导致浏览器错误,但我希望可以在下载之前捕获错误(例如尝试其他方法) 如何获得JS中的最大数据URI大小?关于good ol
document.location.href= "data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,"+data
当文件太大时,这有时会导致浏览器错误,但我希望可以在下载之前捕获错误(例如尝试其他方法)
如何获得JS中的最大数据URI大小?关于good old呢?:-)
我还可以想象一些js测试,因此它不可靠,至少需要一次服务器通信,而且可能不太可靠,因为它也可能因浏览器实现以及服务器处理长URL的可能性而有所不同(但至少您知道您的服务器是这样的)。不管怎么说,就是这样:将静态html页面从服务器加载到隐藏的iframe中,或者只使用ajax get加载到隐藏的iframe中(使用http头将其永久缓存在客户机上,不受请求参数的影响)。例如,您知道目标url(“数据:应用程序…”)的长度为3000个符号。然后在静态html中构建相同长度的假url。。并尝试加载它。如果加载成功,则可以打开真正的url
总而言之,我认为在这种情况下,硬编码并没有那么糟糕。我决定对这个表进行硬编码: 下面是我用来测试maxsize的脚本:
String.prototype.repeat = function( num )
{
return new Array( num + 1 ).join( this );
}
testDataURI=function(size)
{
window.open("data:text/plain,"+"a".repeat(size-16))
}
testDataURI(100000) //test 100k characters
结果:
那么,这是否意味着Firefox(“从26版开始”(或者仅仅26版?)遭受了巨大的倒退;鉴于已知以前的版本(至少版本>=12)至少占用2MB(或者根据MDN,甚至无限长)?还有:我不太清楚。也许这是我的机器的一个缺陷(我无法解释)