Jump to content


Douglas Rocha

Member Since 20/01/2009
Offline Last Active 10/02/2009, 10:15
-----

Topics I've Started

Iniciar Download Automáticamente

20/01/2009, 12:10

Tenho um script que inicia o download de um arquivo, até aí tudo bem.

O meu problema é a impossibilidade do usuário pausar estes downloads, mesmo ultilizando gerenciadores, não consigo pausar o download iniciado, e depois continuar de onde parei...

e visto que o meu site vai trabalhar com arquivos relativamente pesados de 150Mb, preciso que o usuario tenha a possibilidade de pausa os downloads.

Eu não sei se é possível habilitar esta pausa no download, se for, peço que me ajudem, se não... rsrs ... me avisem para que eu pare de procurar na net =p

gostaria de saber tb se isso é alguma configuraçãodo APACHE.

abaixo segue meu script...


[codebox]function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
{ header ("HTTP/1.0 404 Not Found");
return;
}

$size=filesize($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=intval($matches[0]);
if(!empty($matches[1]))
$end=intval($matches[1]);
}
}

if($begin>0||$end<$size)
header('HTTP/1.0 206 Partial Content');
else
header('HTTP/1.0 200 OK');

header("Content-Type: $mimeType");
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: inline; 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(1024*16,$end-$cur));
$cur+=1024*16;
}
}


smartReadFile("./0002-xxx_project-cena1-ujkkrhfi.wmv","0002-xxx_project-cena1-ujkkrhfi.wmv","video/wmv");[/codebox]

agradeço desde já.

IPB Skin By Virteq