Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/08/2004, 16:15
Avatar de xcorpion
xcorpion
 
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
download con resume desde php

que tal
en estos foros me encontre un script en php con la posibilidad de resume lo he probado pero no me acepta el resume, por todo lo demas funciona perfecto, creo que uno de los requisitos era que estubiera corriendo bajo php como modulo de apache, en mi PC no esta instalado de ese modo pero prove en un servidor de hosting y tampoco acepta el resume, les pongo el codigo a ver que le ayan.

Código PHP:
<?
// Si usas PHP inferior a 4.1.x usar $headers=$HTTP_RANGE; (y register_globlas a ON)
$headers $_SERVER['HTTP_RANGE'];
define(PATH$_SERVER["DOCUMENT_ROOT"] . "/");  //path absoluto de los ficheros
if ($headers[Range]){
$pos=strpos ($headers[Range], "bytes=");
$pos2=strpos($headers[Range],"-");
$bytes=substr ($headers[Range], $pos+strlen("bytes="),$pos2-($pos+strlen("bytes=")));
}else{
$bytes=0;
}
settype ($bytes"integer");

$tarchivo=filesize($absfile)-$bytes;
$ttotal=filesize($absfile);

error_reporting(0);

header("Last-Modified: " gmdate("D, d M Y H:i:s T"filemtime($absfile)));
header("Accept-Ranges: bytes");
header("Content-Length: " $tarchivo);
header("Content-Disposition: attachment; filename="."$filedown");
//indicamos al cliente que bytes del archivo vamos a transferir
//en este caso es desde $bytes hasta el final del archivo
//que es lo que nos pide el get right normalmente
//se puede modifcar tomando el ultimo byte del rango
//para hacer mirroring tipo kazaa (seria una version mas avanzada)
header("Content-Range: bytes ".$bytes."-".($ttotal-1)."/".$ttotal);

header("Content-Type: application/octet-stream");

//abrimos el archvo
$fp fopen($absfile,'rb');

if (!
$fp) {
echo 
"error de apertura";
exit();
}
//nos movemos hasta el byte donde debemos empezar a mandar informacion
rewind ($fp);
fseek ($fp$bytes);

//mandamos el pedazo de archivo correspondiente
// la funcion fpassthru() es similar a readfile() en que manda el archivo por la salida estandar (mejor que usar un ciclo con fread adentro),
// la diferencia con readfile es que debe ser abierto con fopen, esta funcion devuelve todos los bytes por la salida estandar
//  desde la posicion actual del puntero hasta el final del archivo
if(!fpassthru($fp)) {
echo 
"error de salida";
exit();
}

header("Connection: close");

exit();
?>