Ver Mensaje Individual
  #8 (permalink)  
Antiguo 04/05/2011, 13:24
Avatar de shujidan
shujidan
 
Fecha de Ingreso: abril-2011
Mensajes: 121
Antigüedad: 13 años
Puntos: 5
Respuesta: Como forzar la descarga de un archivo externo

Esto es lo que me funcionó para saber el content-length:

Código PHP:
Ver original
  1. header('Content-Description: File Transfer');
  2.     header('Content-Type: application/octet-stream');
  3.     header('Content-Disposition: attachment; filename=$nombre');
  4.     header('Content-Transfer-Encoding: binary');
  5.     header('Expires: 0');
  6.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  7.     header('Pragma: public');
  8. En caso de que el archivo fuera externo:
  9.     $x = array_change_key_case(get_headers($URLdescarga, 1),CASE_LOWER);
  10.     $x = $x['content-length'];
  11.     header('Content-Length: ' .$x);
  12. En caso de que el archivo estuviera en nuestro servidor:
  13.     header('Content-Length: ' .filesize('miarchivo.txt');
  14.     ob_clean();
  15.     flush();
  16.     readfile($URLdescarga);
  17.     exit();

Ya con el exit, se descarga correctamente el archivo sin texto demas, pero por ejemplo para que el navegador tenga en cuenta el tamaño del archivo cuando este se esta descargando si es necesario especificar el tamaño

Muchas gracias pateketrueke por el exit, nunca lo hubiera adivinado.

Última edición por shujidan; 07/02/2012 a las 17:58