我在浏览器中生成GIF,因此我可以使用的唯一链接是内联数据URL。 (如data:image/gif;base64,...
)
我想允许用户下载他们创建的GIF。为了让它像点击链接一样简单,我使用an a[download]
就像这样:
<a download="GIF" href="data:image/gif;base64,...">Download</a>
使用小文件,这将打开我的MacOS“另存为”对话框。有了这个GIF,它没有。点击链接后没有任何反应,只是Chrome图标变为如下所示:
当我右键单击GIF并选择“将图像另存为”时,我可以保存它。这让我可以看到GIF高达3MB。
我已检查过以常规方式链接的大文件,a[download]
链接工作正常。这似乎只是内联数据URL文件的问题。
是否有文件大小限制?
奖金问题:
答案 0 :(得分:0)
TL; DR:数据网址大小限制 2 MiB 。 See this demo
-
这意味着文件大小略小于a base64-encoded image is about 37% larger than the original。
另请注意,它是2 Mebibyte 限制,因此带有“i”的“2 MiB”。 As explained here,这意味着限制为2 * 2 ^ 20 = 2,097,152字节,或者熟悉的基数为10的兆字节的MB97,MB。
如the demo所示,这可以转换为1.568 MB文件下载,但Chrome无法下载1.581 MB文件。
URL.createObjectUrl
作为@ roland-starke建议,或者可能在新标签页中打开数据网址