estoy usando esto para el envío de archivos a usuariosborrar un archivo después de descargarlo de usuario
header('Content-type: application/zip');
header('Content-Length: ' . filesize($file));
header('Content-Disposition: attachment; filename="file.zip"');
readfile($file);
Quiero borrar este archivo después de usuario lo descarga, ¿cómo puedo hacer esto?
EDITAR: Mi escenario es así, cuando el usuario acciona el botón de descarga, mi script crea un archivo zip temporal y el usuario lo descarga, luego ese archivo zip temporal se eliminará.
EDIT2: OK la mejor manera parece ejecutar un trabajo cron que limpiará archivos temporales una vez por hora.
EDIT3: He probado mi script con unlink
, funciona a menos que el usuario cancele la descarga. Si el usuario cancela la descarga, el archivo zip permanece en el servidor. Entonces eso es suficiente por ahora. :)
EDIT4: ¡GUAU! connection_aborted()
hizo el truco!
ignore_user_abort(true);
if (connection_aborted()) {
unlink($f);
}
Este eliminará el archivo incluso si el usuario cancela la descarga.
posible duplicado de [comprobar si se ha completado descargar] (http://stackoverflow.com/questions/1563187/check- if-download-is-completed) – hakre