强制Web浏览器播放文件而不是下载

时间:2014-04-09 12:30:37

标签: php wordpress web video-streaming html5-video

我正在尝试在网络浏览器中播放文件而不是下载。使用WordPress嵌入文件

    [video width="250" height="140" m4v="http://www.justtalking.co.uk/wp-content/uploads/2014/02/Will-Aid-2013-Case-Study.m4v"][/video]

我想将链接Link to Video用于电子邮件营销目的。打开链接时,Web浏览器会下载文件而不是播放。但是,我更喜欢视频是在网络浏览器中播放的!

这可能吗?

2 个答案:

答案 0 :(得分:3)

您需要在托管m4v文件的服务器上为video/mp4video/x-m4v添加MIME / TYPE。关于如何执行此操作,您可以阅读here部分“MIME类型后面的丑陋头部”。

您的URL在响应标头中指示Content-Type:text / plain,因此提示下载。

答案 1 :(得分:1)

可能最纯粹的解决方案是添加标题" Content-Disposition:attachment"到那个文件。

无法在HTML链接级别上完成,但您可以通过.htaccess或虚拟主机配置来完成。

如果你有mod_header的apache2,你可以这样做:

<FilesMatch "\.jpg$">
    Header add "Content-Disposition" "attachment"
</FilesMatch>

你必须制作简单的PHP脚本,使用header()函数来完成这项工作,然后简单地将目标文件传递给输出。

<?php
$allowed_path = __DIR__."/downloads/";
$file = $allowed_path.basename($_GET["file"]);

if(file_exists($file)) {
    header("Content-disposition: attachment");
    readfile($file);
}
else {
    header('HTTP/1.1 404 Not Found', TRUE, 404);
}

我注意到的另一种方式是您的视频链接显示错误的内容类型(这是小问题):

Content-type: text/plain

你可以通过添加一个这样的标题来解决这个问题:

header("Content-type: ".mime_content_type($file));

但请注意安全性,因为如果你在$ allowed_pa​​th中有任何PHP文件,可以通过这个脚本下载它。