Normalmente, cuando quiero permitir que un usuario descargue un archivo sin revelar la ubicación exacta, sólo tiene que utilizar algo como esto para hacerles descarga el archivo:¿Cómo puedo permitir que una descarga se detenga/reanude?
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"" . $filename) . "\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($filename));
readfile("$filename");
Pero si están utilizando un navegador moderno o otro cliente de descarga, pausan la descarga e intentan reanudarla; el script (suponiendo que sigan autenticados o lo que sea) volverá a enviar los encabezados y el contenido del archivo desde el principio, interrumpiendo así la descarga y básicamente requiriendo que el archivo sea redownloaded desde el principio.
¿Cómo puedo habilitar mi script para compensar las descargas pausadas (y consecuentemente, reanudadas)?
lo que realmente necesita esta funcionalidad? ¿Sus descargas protegidas provienen de cargas de usuarios? Si es así, ¿cuál es su límite de tamaño de carga? Si es de 50 MB o menos, diría que está bien no tener esta funcionalidad. O bien, si son todos los archivos que genera y el tamaño promedio es igualmente pequeño, probablemente no sea necesario. Por otro lado, si son todos archivos muy grandes, podría considerar hacer algo así como distribuirlos como un torrente y luego proteger la descarga del archivo torrent. No es tan seguro como los usuarios pueden compartir archivos torrent, simplemente algo en lo que pensar. –
A partir de este momento en el tiempo, estoy preguntando cómo solo buscar el conocimiento, no usarlo en ningún proyecto en particular. He querido esta funcionalidad en proyectos anteriores, y probablemente en el futuro. Solo pensé en preguntar mientras no tengo prisa por encontrar la respuesta. –