【问题标题】:php headers instant download videos [duplicate]php标头即时下载视频[重复]
【发布时间】:2013-07-11 10:44:26
【问题描述】:

当您加载到它下载视频的页面时,我正在尝试制作一个 php 脚本。但是,由于我对标头一无所知,所以我似乎无法弄清楚,所以请解释它为什么起作用以及标头是如何工作的。我正在尝试让浏览器下载视频文件。有人也可以解释一下标题以及他们做了什么。

这是我失败的代码:

<?php 
//Outputing video name
    $file_name = $_POST['FileToD'];
//outputting video extension e.g video/mp4
    $file_ext= $_POST['FileExt'];
//where the file is kept
    $file_path = 'mysever.myadress.com/media/movies/' . $file_name;
    header('Content-Type:'.$file_ext);
    header('Content-Length:' . filesize($file_path));
    header('Content-Description: attachment; filename='.$file_name);
    readfile($file_path);
?>

【问题讨论】:

  • 你没有说如何你的代码失败了,但这里有一个提示如何让它工作:删除所有和你拥有的所有 HTML,只保留中间的部分&lt;?php?&gt; 并重新运行您的代码。
  • 请显示print_r($_POST);的输出
  • 查看服务器日志和/或 php error_reporting 以包括显示通知/警告。所以任何问题都可以显示出来。
  • 没有可显示的错误

标签: php


【解决方案1】:
  1. 如果要输出视频,请不要从输出 HTML 开始,然后切换到作为同一文件一部分的视频数据。 (无论如何,在您开始输出数据后,您无法设置响应标头)。 删除&lt;?php 之前和?&gt; 之后的所有内容
  2. $file_url 应该是服务器文件系统上要提供的文件的路径。它不应该是一个 URL(除非你想要一个非常低效的方法或需要从不同的服务器代理),如果它是一个 URL,那么它需要以方案开头(例如 http://)。
  3. content-type 必须是视频的实际内容类型(例如video/mp4),而不是文件扩展名(用户提供它没有意义)。

您还需要清理用户数据。目前(如果上述错误得到修复)那么任何人都可以请求服务器上存在的任何文件。

【讨论】:

  • 对不起,它不是一个 url,它是一个路径,我的变量被错误地命名为抱歉。它已经被修复了。
  • File_Ext 表示文件扩展名,如果我要回显它会说 video/mp4 或 video/avi 等...
猜你喜欢
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多