【问题标题】:How can I make a video file available for download?如何使视频文件可供下载?
【发布时间】:2020-11-10 01:43:38
【问题描述】:

我正在尝试在我的网站上提供视频下载选项。 我有直接链接(以 .mp4/.webm 结尾)可供下载(如果重要,它们不会托管在我的服务器上)。 这是我尝试过的:

     <a href="http://stream.flowplayer.org/bauhaus/624x260.webm" download>Download</a>

它只适用于 chrome,在 FireFox 中它只会在浏览器本身上打开视频。

【问题讨论】:

    标签: html href


    【解决方案1】:

    您需要一个包装脚本来适当地设置 Content-Type Content-Disposition 标头,并输出您要提供的文件。

    在 PHP 中,这将是这样完成的:

    文件名:624x260.php

    <?php
    // We'll be outputting a webm video
    header('Content-type: video/webm');
    
    // It will be called downloaded.webm
    header('Content-Disposition: attachment; filename="download.webm"');
    
    readfile('624x260.webm');
    ?>
    

    然后您将改为链接到 PHP 文件,如下所示:

    <a href="624x260.php">Download</a>
    

    【讨论】:

    • 谢谢,它有效,但如果你不介意,我还有另一个问题;我尝试添加一个包含用户名和密码的视频链接,如下所示:user:pass@stream.flowplayer.org/bauhaus/624x260.webm 但它对我不起作用。当我尝试与用户一起在浏览器上运行它并传递它时。
    • 尝试在您的 PHP 文件中使用视频的绝对链接(包括 http://):...readfile('http://user:pass@stream.flowplayer.org/bauhaus/624x260.webm');
    • 我试过了,但没用。我尝试过的文件实际上是 .mp4,因此我将内容类型更改为“video/mp4”,但没有帮助。
    • 文件是托管在您的服务器上,还是从远程站点获取?您可以尝试使用 fopen() 而不是 readfile(),但您可能还有其他跨域文件策略问题。这也可能有帮助:php.net/manual/en/features.remote-files.php [还请注意,如果您使用 fopen(),则必须回显输出。像这样:echo (fopen("http://user:pass@blah.com/vid.mp4", "r"));]
    【解决方案2】:

    如果您碰巧有一个可以编辑 .htaccess 文件的 apache 服务器,请添加此行。

    AddType application/octet-stream .webm
    

    如果你不想这样做,你也可以通过 php 来做。

    PHP 代码:

    <?php
    $file = $_GET['file'];
    header ("Content-type: octet/stream");
    header ("Content-disposition: attachment; filename=".$file.";");
    header("Content-Length: ".filesize($file));
    readfile($file);
    exit;
    ?>
    

    HTML 代码:

    <a href="direct_download.php?file=fineline.mp3">Download the mp3</a>
    

    【讨论】:

      【解决方案3】:

      HTML5 添加了您在示例中拥有的下载属性,但该属性为空。为下载属性添加一个值,然后嘿。

      即在您的 a 标签中将下载更改为 download="624x260.webm"。

      http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download

      对于不兼容 HTML5 的浏览器,最直接的方法是在链接旁边附上“右键单击下载”的方向。这将涵盖大多数情况和浏览器。

      这里概述了几种技术,我意识到您无法压缩文件。

      http://webdesign.about.com/od/beginningtutorials/ht/download_link.htm

      有许多更复杂的方法可以做到这一点,包括修改网络服务器配置,但并不是每个人都有权/知道如何做到这一点。

      【讨论】:

        【解决方案4】:

        注意:Chrome 14+ 和 Firefox 20+ 支持下载属性。

        作为其他浏览器的替代方案,您可以从此处使用 jQuery 插件 http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/4

        http://jqueryfiledownload.apphb.com/

        你可以让它像这样可以下载

        <a href="http://video.webmfiles.org/elephants-dream.webm" class="download" target="_blank">Download</a>
        
                $(document).on("click", "a.download", function () {
                    $.fileDownload($(this).prop('href'))
                        .done(function () { alert('File download a success!'); })
                        .fail(function () { alert('File download failed!'); });
        
                    return false;
                });
        

        【讨论】:

        • 我有 Firefox 21,但它不起作用。但在 chrome 中它可以工作。
        猜你喜欢
        • 2012-01-26
        • 1970-01-01
        • 1970-01-01
        • 2017-09-05
        • 1970-01-01
        • 2011-01-28
        • 2015-01-20
        • 1970-01-01
        • 2015-07-04
        相关资源
        最近更新 更多