-2

当您加载到下载视频的该页面时,我正在尝试制作一个 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);
?>
4

1 回答 1

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

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

于 2013-07-11T10:48:10.947 回答