Я хочу, чтобы PHP-код загружал файлы размером более + 5 ГБ и resumeable
Я вижу мультикод здесь и на других сайтах, но весь этот код загружает максимум 2 ГБ и остановлен или не может быть возобновлен!
Пример для одного из этого кода: У меня есть файл (4 ГБ), сценарий только для загрузки (2 ГБ) и остановлен или загрузить 4 ГБ, но не могу возобновить его!
наконец: я использую этот код ниже, который может загружать большие файлы, но не может возобновить работу после 2 ГБ, где он возвращается к первому -_-
function smartReadFile($location, $filename)
{ if(!file_exists($location))
{ header ("HTTP/1.0 404 Not Found");
return;
}
$size=filesize64($location);
$time=date('r',filemtime($location));
$fm=@fopen($location,'rb');
if(!$fm)
{ header ("HTTP/1.0 505 Internal server error");
return;
}
$begin=0;
$end=$size;
if(isset($_SERVER['HTTP_RANGE']))
{ if(preg_match('/bytes=\h*(\d+)-(\d*)[\D.*]?/i', $_SERVER['HTTP_RANGE'], $matches))
{ $begin = floatval($matches[1]) ;
if( !empty($matches[2]) ) {
$end = floatval($matches[1]);
}
}
}if($begin>0||$end<$size)
header('HTTP/1.0 206 Partial Content');
else
header('HTTP/1.0 200 OK');
$get_type= mime_content_type($location);
$path_parts = pathinfo($location);
$file_ext = $path_parts['extension'];
$ctype_default = "application/force-download";
$content_types = array(
"exe" => "application/octet-stream",
"zip" => "application/zip",
"rar" => "application/x-rar",
"avi" => "video/x-msvideo",
"apk" => "application/vnd.android.package-archive",
"text" => "text/plain",
"mp4" => "video/mp4",
"mp3" => "video/mp3",
);
$ctype = isset($content_types[$file_ext]) ? $content_types[$file_ext] : $ctype_default;
header("Content-Type: " . $ctype);
header('Cache-Control: public, must-revalidate, max-age=0');
header('Pragma: no-cache');
header('Accept-Ranges: bytes');
header('Content-Length:'.($end-$begin));
header("Content-Range: bytes $begin-$end/$size");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Transfer-Encoding: binary\n");
header("Last-Modified: $time");
header('Connection: close');
$cur=$begin;
fseek($fm,$begin,0);
while(!feof($fm)&&$cur<$end&&(connection_status()==0))
{ print fread($fm,min(10240*16,$end-$cur));
$cur+=10240*16;
}
}
Этот код может загружать файлы любого размера и возобновлять его, но при доступе к 2 ГБ, если вы остановили его и возобновите, вы вернетесь к первому
Пожалуйста, решите мою проблему или дайте мне поддержку кода скачать большой файл + 5 ГБ и возобновить
Я использую Wamp Server, Windows Server 2012 x64
Спасибо
Задача ещё не решена.
Других решений пока нет …