单击下载按钮以从URL下载图像:URL中的点都被下划线代替了吗?

时间:2019-03-05 14:23:10

标签: javascript html image url button

我正在尝试执行此操作:单击“下载”按钮,然后从URL下载图像。这是我的代码:

<a download="https://cdn4.iconfinder.com/data/icons/web-links/512/41-512.png" href="" title="ImageName">
  <button>download</button>
</a>

单击“下载”按钮将下载扩展名为.png的文件,但文件中的某些点将由下划线代替:

https___cdn4.iconfinder.com_data_icons_web-links_512_41-512.png

我想下载png,为什么会发生?我该如何解决?

2 个答案:

答案 0 :(得分:3)

您误解了download属性的工作方式。来自MDN:

  

如果属性具有值,则将其用作预填充文件名   在“保存”提示中(如果用户仍然可以更改文件名,   想)。尽管/和\是允许的值,但没有限制   转换为下划线。大多数文件系统都限制了一些标点符号   文件名,浏览器会相应地调整建议的名称。

因此,使用href属性指向文件,并使用download属性指定一个文件名(当前文件名除外)。

<a download=my_foo.png href=path/to/foo.png />

答案 1 :(得分:0)

根据MDN

  

此属性指示浏览器下载URL而不是导航至URL,因此将提示用户将其保存为本地文件。如果属性具有值,则将其用作“保存”提示中的预填充文件名(用户仍然可以根据需要更改文件名)。对允许的值没有限制, /和\都转换为下划线。。大多数文件系统都限制了文件名中的标点符号,浏览器会相应地调整建议的名称。

这样做在规范中,因为在文件系统中,点和斜杠会导致无效的文件名。

以您的示例为例:

<a download="512.png" href="https://cdn4.iconfinder.com/data/icons/web-links/512/41-512.png" title="ImageName">
  <button>download</button>
</a>