当图像的SRC为Base64时,保存名称从哪里来?

3
当一个标签从服务器上加载时,src属性包含了你在右键点击图片并选择“另存为”时所看到的图片名。
<img src="/myimage.jpg">

如果你使用 base64 编码创建了一个 <img> 标签,那么 src 属性的名称就没有用处了。

<img src="data:image/jpeg;base64,/9j/4AAQSkZ...">
  • 当我在Chrome桌面版中右键单击/"另存为"时,文件名总是为"download.jpg"

  • 当我在iOS/Safari中长按时,没有机会查看或保存名称,但它会给它一个与所有其他图像保持一致的唯一名称 (例如“IMG_00xx.JPG”注意:只有在将iPhone连接到计算机并浏览图片时才能看到这个名称。实际设备上没有界面可以查看该名称!)

  • 当我在Chrome/Android中长按时,使用与src中最后一个'/'相关的名称,并带有".bin"扩展名(例如“9bx=.bin”)

是否有办法给浏览器指定要使用的名称?

这个答案(来自 '11)表明,“没有”。Save As prompt "image name" in generic handler.ashx ?

九年后,我希望能有所进展。


据我所知,自那时以来没有什么改变。然而,在数据URL中的媒体类型可能会带有参数。这些参数不会被浏览器处理,但可以通过JS和DOM API获得。例如:<img src="data:image/jpeg;name=whatever.jpg;base64,/9j/4AAQSkZ..."> - collapsar
1
JS是通过文件API构建src的,因此无需将其“存储”以供以后使用。这只是为了在用户选择本地保存时提供更有用的交互。 - Scott H
1个回答

0

请使用<a download="myimage.jpg" href="data:image/jpeg;base64,/9j/4AAQSkZ...">下载图片</a>代替。


1
这是一个有趣的答案。它解决了我的问题,虽然不是我预期的方式。我没有考虑过将图像数据放在href中。我还没有在很多浏览器上测试过它,但它看起来很有前途。 - Scott H

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接