Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当尝试在Chrome中下载内联图像时,文件大小是多少?_Javascript_Html_Google Chrome_Browser - Fatal编程技术网

Javascript 当尝试在Chrome中下载内联图像时,文件大小是多少?

Javascript 当尝试在Chrome中下载内联图像时,文件大小是多少?,javascript,html,google-chrome,browser,Javascript,Html,Google Chrome,Browser,我正在浏览器中生成GIF,因此我可以使用的唯一链接是内联数据URL。(如数据:image/gif;base64,) 我想允许用户下载他们创建的GIF。为了让它像点击链接一样简单,我使用了like so: 对于小文件,这将打开我的MacOS“另存为”对话框。有了这个GIF,它就没有了。当我点击链接时,什么也没有发生,除了Chrome图标变为如下所示: 当我右键点击GIF并选择“另存图像为”时,我可以很好地保存它。这让我看到GIF是一个惊人的3MB 我已经检查了一个以通常方式链接到的大文件,而

我正在浏览器中生成GIF,因此我可以使用的唯一链接是内联数据URL。(如
数据:image/gif;base64,

我想允许用户下载他们创建的GIF。为了让它像点击链接一样简单,我使用了like so:


对于小文件,这将打开我的MacOS“另存为”对话框。有了这个GIF,它就没有了。当我点击链接时,什么也没有发生,除了Chrome图标变为如下所示:

当我右键点击GIF并选择“另存图像为”时,我可以很好地保存它。这让我看到GIF是一个惊人的3MB

我已经检查了一个以通常方式链接到的大文件,而
a[download]
链接工作正常。这似乎只是内联数据URL文件的问题

是否有文件大小限制


奖金问题:

  • 为什么有文件大小限制
  • 有解决办法吗

    • TL;DR:数据url大小限制为2 MiB

      --

      这意味着文件大小略小于此值,如图所示

      还要注意的是,它是一个2mebyte的限制,因此“2mib”有一个小“i”,这意味着限制为2*2^20=2097152字节,或熟悉的基础10兆字节MB的2.097

      如中所示,这意味着1.568MB的文件可以正常下载,但Chrome无法下载1.581MB的文件


      • 为什么Chrome会这样做?不确定。看起来可能是个虫子
      • 解决方法:不确定。您可以尝试使用@roland starke建议的
        URL.createObjectUrl
        ,或者在新选项卡中打开数据URL

      长度限制:尽管Firefox支持基本上无限长的数据URL,但浏览器不需要支持任何特定的最大数据长度。例如,Opera 11浏览器将URL长度限制为65535个字符,从而将数据URL限制为65529个字符(如果使用纯数据,则65529个字符是编码数据的长度,而不是源,但不指定MIME类型)。如果您不使用数据URL,您可以尝试使用这两个URL,而不是将它们添加为注释,这样我就可以正确地响应每一个URL。如果我没有弄错的话,长度限制指的是各种浏览器使用长数据URL的能力,而Chrome允许使用大量的URL,除非在这种特殊情况下<代码>URL.createObjectURL失败,并显示消息“失败-无文件”。
      <a download="GIF" href="data:image/gif;base64,...">Download</a>