V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
httpbin - 协议调试工具
httpstatuses - 协议状态码查询
httpie - cURL-like tool for humans
Fiddler
Livid
V2EX  ›  HTTP

关于让 .mp4 / .wmv 文件在浏览器被下载,而不是直接播放

  •  3
     
  •   Livid · 2015-01-18 02:28:14 +08:00 · 11323 次点击
    这是一个创建于 3379 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近研究了一下这个问题,以前以为只需要添加 Content-Type: application/octet-stream 就可以了,但是发现在 Firefox 和 IE 里还是会被播放,Chrome 和 Safari 里倒是直接下载了。然后 Google 了一下之后发现需要添加的是两个 header:

    Content-Type: application/octet-stream
    Content-Disposition: attachment
    

    这样的话,在所有浏览器里都是启动下载对话框,而不是直接播放。

    关于 Content-Disposition 的更多信息:

    http://www.iana.org/assignments/cont-disp/cont-disp.xhtml

    9 条回复    2015-01-18 11:28:46 +08:00
    imn1
        1
    imn1  
       2015-01-18 02:29:18 +08:00
    Content-Disposition: attachment
    这句比较重要
    typcn
        2
    typcn  
       2015-01-18 02:52:11 +08:00   ❤️ 2
    如果由于反代等原因 返回了两个 Content-Disposition 即使完全相同也会导致浏览器拒绝下载
    之前就被坑了。。
    Showfom
        3
    Showfom  
       2015-01-18 03:07:44 +08:00
    索性可以直接让所有文件都强制下载
    kookxiang
        4
    kookxiang  
       2015-01-18 03:53:32 +08:00   ❤️ 6
    <a href="*****.mp4" download>
    <a href="*****.mp4" download="test.mp4">
    这样也行
    ericls
        5
    ericls  
       2015-01-18 04:18:22 +08:00   ❤️ 1
    加个download attribute应该可以

    还能设置下载的文件名称
    jiuzhe
        6
    jiuzhe  
       2015-01-18 08:18:11 +08:00
    学习了
    xoxo
        8
    xoxo  
       2015-01-18 10:22:43 +08:00
    Content-Disposition: attachment, filename="xoxo.avi"

    也行,还兼容IE6
    foxwoods
        9
    foxwoods  
       2015-01-18 11:28:46 +08:00   ❤️ 1
    加上这个header兼容性会更好,也更安全:

    X-Content-Type-Options: nosniff
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4764 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 09:51 · PVG 17:51 · LAX 02:51 · JFK 05:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.