我试图强制链接下载文件作为附件。这是我以前做的东西,但有些事情出错了,我不确定它是什么。我想作为附件发送的文件类型都是mp4文件。这是我在做什么:下载文件作为附件文件大小不正确
<?php
if(isset($_GET['file']))
{
$file_path = dirname(__FILE__) . "/videos/$_GET[file]";
if(file_exists($file_path))
{
$file_url = "/videos/$_GET[file]";
header ("Content-type: video/mp4");
header("Content-Transfer-Encoding: binary");
header("Content-disposition: attachment; filename=\"".basename($_GET['file']) ."\"");
header("Content-Length: ".filesize($file_path));
echo readfile($file_url);
}
}
?>
正如你可以看到我正在检查,看看文件是否存在,然后再尝试服务它。会发生什么是我得到的文件,它的类型是正确的(MP4视频),但该文件只有大约100 btyes的大小。在我调试时,我测试了一下文件大小是否正确。我已将readfile()
行更改为: header("location:/videos/$_GET[file]");
它将我带到视频中。我做了一些Google搜索,而且我没有想出这个行为的原因。有没有人见过这种类型的东西?任何想法可能会导致这种情况?任何帮助将非常感激,非常感谢!
Gah!当我使用$ file_path时,我使用的是$ file_url,不知道我怎么没有看到它。对于那些我实际上正在做的事情的精简版本来说,完整的一个有安全检查,但是谢谢指出它。非常感谢! – TheMethod
为什么这是低调? – Brad