5

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

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

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

4

4 回答 4

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>
于 2013-06-14T21:51:02.620 回答
1

如果您碰巧有一个可以编辑 .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>
于 2013-06-14T21:52:26.960 回答
0

注意: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;
        });
于 2013-06-14T21:52:19.240 回答
0

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

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

于 2013-06-14T21:50:09.557 回答