自从最新版本以来,我经历过Chrome的一些意想不到的行为:在Firefox中,此代码工作正常:
<a id="playlist" class="button" download="Name.xspf" href="data:application/octet-stream;base64,PD94ANDSOON" style="display: inline;">Download Me</a>
它无法在Chrome中运行(只需下载名为“下载”的文件),但之前的工作非常好。我有什么要改变它再次起作用?
经过一番研究,我终于找到了你的问题。
<a>下载属性:
如果HTTP标头Content-Disposition:存在并提供与此属性不同的文件名,则HTTP标头优先于此属性。
如果此属性存在并且Content-Disposition:设置为内联,则Firefox优先考虑Content-Disposition,例如文件名大小写,而Chrome优先考虑下载属性。
HTTP-Header Content-Disposition
阅读评论,我遇到了与@ buffer-overflow相同的问题,在问题中发现了这个问题:
我猜测网页和下载的来源不同。我们不再尊重跨源请求的下载属性建议文件名。单击该链接仍会启动下载。但是文件名仅源自仅依赖于服务器的因素(例如,响应中的Content-Disposition头和URL)。
所以没有机会让它工作...... :(
我有一个关于这个问题的简单解决方案。您只需要使用xampp控件将您的html文件放入Apache等服务器中,依此类推。因为下载属性正在通过服务器正常工作。
<a download href="data:application/octet-stream;base64,PD94ANDSOON">Download Me</a>
这可以通过将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>
转到Chrome点击“设置”,您会在Chrome浏览器窗口中看到一个新页面。向下滚动到“高级设置”,找到“下载”组,然后清除“自动打开”选项。下次下载项目时,它将被保存而不是自动打开。