Chrome下载属性不起作用

问题描述 投票:33回答:5

自从最新版本以来,我经历过Chrome的一些意想不到的行为:在Firefox中,此代码工作正常:

<a id="playlist" class="button" download="Name.xspf" href="data:application/octet-stream;base64,PD94ANDSOON" style="display: inline;">Download Me</a>

它无法在Chrome中运行(只需下载名为“下载”的文件),但之前的工作非常好。我有什么要改变它再次起作用?

html5 google-chrome
5个回答
34
投票

经过一番研究,我终于找到了你的问题。

<a>下载属性:

如果HTTP标头Content-Disposition:存在并提供与此属性不同的文件名,则HTTP标头优先于此属性。

如果此属性存在并且Content-Disposition:设置为内联,则Firefox优先考虑Content-Disposition,例如文件名大小写,而Chrome优先考虑下载属性。

Source

HTTP-Header Content-Disposition


42
投票

阅读评论,我遇到了与@ buffer-overflow相同的问题,在问题中发现了这个问题:

我猜测网页和下载的来源不同。我们不再尊重跨源请求的下载属性建议文件名。单击该链接仍会启动下载。但是文件名仅源自仅依赖于服务器的因素(例如,响应中的Content-Disposition头和URL)。

所以没有机会让它工作...... :(


1
投票

我有一个关于这个问题的简单解决方案。您只需要使用xampp控件将您的html文件放入Apache等服务器中,依此类推。因为下载属性正在通过服务器正常工作。

<a download href="data:application/octet-stream;base64,PD94ANDSOON">Download Me</a>

0
投票

这可以通过将target="_blank"属性添加到href来解决。

像这样:

Save sprites.svg as 
<a target="_blank" download="somefilename.svg"
href="https://cdn.sstatic.net/Img/unified/sprites.svg"
>somefilename.svg</a>

-6
投票

转到Chrome点击“设置”,您会在Chrome浏览器窗口中看到一个新页面。向下滚动到“高级设置”,找到“下载”组,然后清除“自动打开”选项。下次下载项目时,它将被保存而不是自动打开。

© www.soinside.com 2019 - 2024. All rights reserved.