我有一個用於下載mp4 videp文件的php腳本。它現在正在適用於小尺寸文件(測試高達60 MB)。當我嘗試一個大的(300 MB)時,它顯示與「內存限制」相關的錯誤。因此,在ini文件中進行了一些編輯,將內存限制增加到400 MB(memory_limit = 400M)。然後我嘗試運行我的腳本,但下載框顯示的內容大小爲189個字節。我用另一個mp4文件(小尺寸)試了一下,效果很好。我不明白它的原因。所以請親切指導我。我的腳本如下..在php下載問題
$file = $_SERVER['DOCUMENT_ROOT']."/folder_name/filename.mp4";
$filesize = filesize($file);
$fileName=$file;
$offset = 0;
$length = $filesize;
if (isset($_SERVER['HTTP_RANGE'])) {
$partialContent = true;
preg_match('/bytes=(\d+)-?/', $_SERVER['HTTP_RANGE'], $matches);
$offset = intval($matches[1]);
$length = $filesize - $offset;
}else {
$partialContent = false;
}
$file = fopen($file, 'r');
fseek($file, $offset);
$data = fread($file, $length);
fclose($file);
if ($partialContent) {
header('HTTP/1.1 206 Partial Content');
header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $filesize);
}
header("Content-type: video/mp4");
header('Content-Length: ' . $filesize);
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Accept-Ranges: bytes');
print($data);
下載框,顯示是..
如果顯示的189個字節的腳本可能出錯了內容大小和文件的內容可能會成爲其中的文本錯誤,請在文本編輯器中打開文件並查看。 –
嘗試'ini_set('memory_limit','300M'); '但是,如果你不需要做任何形式的驗證,爲什麼不把mp4文件放在一個目錄中並讓用戶直接從服務器上下載? – Reinherd
@ Patrick Evans:非常感謝。正如你所說的,「允許的內存大小***字節耗盡」,所以我在腳本中添加了一行代碼(ini_set('memory_limit','-1'))。現在pblm解決了..謝謝很多.. :) – DjangoDev