我試圖強制鏈接下載文件作爲附件。這是我以前做的東西,但有些事情出錯了,我不確定它是什麼。我想作爲附件發送的文件類型都是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