我試圖下載一個.mp4文件。 (大約1.3GB大小)。 我使用的是以下幾點: 強制下載,從PHP文件
<?php
$path = "video.mp4";
header('Accept-Ranges: bytes'); // For download resume
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="'.basename($path).'"');
header('Content-Length: ' . filesize($path)); // File size
header('Content-Transfer-Encoding: binary'); // For Gecko browsers mainly
header('Content-Type: application/octet-stream');
header('Expires: 0');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($path)) . ' GMT');
header('Pragma: no-cache');
ob_clean();
flush();
readfile($path);
我打開我的PHP文件,而Firefox的「要保存」菜單彈出。尺寸看起來不錯。 我按另存爲,到我的桌面。最終下載的文件按照隨機大小列出,大約爲400MB(330,463和440)。
響應頭:
Connection: Keep-Alive
Content-Disposition: attachment; filename="//www.frederikspang.dk/elevgallavideo.mp4"
Content-Length: 1422778850
Content-Type: video/mp4
Date: Sun, 30 Jun 2013 22:12:30 GMT
Keep-Alive: timeout=10, max=50
Pragma: public
Server: Apache
content-transfer-encoding: binary
您可能會遇到執行時間限制。下載總是在相同的時間段後停止嗎? – 2013-06-28 21:08:46
可恢復的文件下載需要比這更多的代碼;所以你應該刪除'Accept-Ranges'。請參閱:http://stackoverflow.com/questions/157318/resumable-downloads-when-using-php-to-send-the-file –
你實際上使用輸出緩衝?如果不是,你可能不需要ob_clean()和flush(),因爲readfile命令會直接將數據輸出到客戶端。 – dethtron5000