Chrome下载属性不起作用

Buf*_*low 36 html5 google-chrome

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

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

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

Aug*_*ger 45

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

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

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

  • 在HTML5和HTML 5.1的W3C建议中没有任何限制,但您可以在Mozilla参考中找到."此属性仅适用于同源URL." - 来自https://developer.mozilla.org/en/docs/Web/HTML/Element/a#Attributes (3认同)
  • 我看到完全不同的行为...它甚至没有“尝试”下载,而是表现得好像下载属性不存在一样,并且正在用新图像替换页面! (3认同)

Ema*_*ilă 37

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

<a>下载属性:

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

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

资源

HTTP-Header Content-Disposition

  • @MMMesees如果我没记错的话,浏览器不再遵循下载属性,除非href指向同一来源的资源.另请参阅下面的答案 (10认同)
  • 我的服务器似乎没有发送“ Content-Disposition”,并且如您所描述的那样,Firefox无法正确下载文件,但是我的问题却被逆转了:Chrome不接受下载属性,而Firefox却接受。即使我仅创建一个仅以此内容作为内容的简单HTML文件(并以文件URL形式打开),它也无法在Chrome中运行,而只能在Firefox中运行。在我更新Chrome(版本35.0.1916.114 m)之前也可以使用 (2认同)
  • 从版本35开始,它似乎是Chrome中的一个错误:https://code.google.com/p/chromium/issues/detail?id = 373182 (2认同)
  • 如果您可以控制服务器,那将起作用,但不是前端的解决方案。当服务器没有`Content-Disposition`标头时,我仍然不知道如何在html中实现。 (2认同)

owa*_*are 6

我在wordpress上遇到了这个问题,问题是wordpress生成了文件的完整路径,在a标签中你必须删除完整的域名并添加一个相对路径

示例,而不是:

<a href="http://mywordpresssite.com/wp-content/uploads/file.mp4" download="file.mp4" >
Run Code Online (Sandbox Code Playgroud)

你必须这样做:

<a href="/wp-content/uploads/file.mp4" download="file.mp4">
Run Code Online (Sandbox Code Playgroud)

这将使它工作

  • 这与原来的问题无关,但解决了我的生活:) (2认同)
  • 同样在这里。如果指定了整个域,Chrome 似乎可能会假设它来自不同的域,即使事实并非如此。 (2认同)