0
我寫了一個PHP腳本來強制下載文件給用戶。一切都很好,但有一個例外,該文件沒有完全下載假設有一個10 MB的mp3文件下載,但它停止5 MB後顯示下載完成。在php中強制下載的問題
我的網站主機是godaddy.com
和代碼低於
<?php
if(ini_get('zlib.output_compression')) {
ini_set('zlib.output_compression', 'Off');
}
if (isset ($_REQUEST['file_name'])) {
$filename = basename($_REQUEST['file_name']);
$filesize = filesize("mp3gallery/".$_REQUEST['file_name']);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-length: $filesize");
header("Content-Transfer-Encoding: binary");
header('Content-type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3');
header('Content-Disposition: attachment; filename="'.$filename.'"');
$read_file = "mp3gallery/".$_REQUEST['file_name'];
function readfile_chunked($filename,$retbytes=true) {
$chunksize = 1*(1024*1024); // how many bytes per chunk
$buffer = '';
$cnt =0;
// $handle = fopen($filename, 'rb');
$handle = fopen($filename, 'rb');
if ($handle === false) {
return false;
}
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
echo $buffer;
ob_flush();
flush();
if ($retbytes) {
$cnt += strlen($buffer);
}
}
$status = fclose($handle);
if ($retbytes && $status) {
return $cnt; // return num. bytes delivered like readfile() does.
}
return $status;
}
readfile_chunked($read_file,true);
}
?>
請幫助.........
您可能要添加的,我們應該OP試試這個。你的代碼做得更好嗎? – middus