Foros del Web » Programando para Internet » Javascript »

Forzar descarga de un archivo

Estas en el tema de Forzar descarga de un archivo en el foro de Javascript en Foros del Web. Hola, necesito forzar la descarga de un archivo externo al servidor. En un servidor dedicado pude hacerlo, pero en uno compartido no pude, me lanza ...
  #1 (permalink)  
Antiguo 03/07/2011, 06:58
 
Fecha de Ingreso: noviembre-2010
Mensajes: 1.242
Antigüedad: 13 años, 5 meses
Puntos: 73
Forzar descarga de un archivo

Hola, necesito forzar la descarga de un archivo externo al servidor. En un servidor dedicado pude hacerlo, pero en uno compartido no pude, me lanza errores.

Entonces pensé forzarla de lado al cliente.

¿Cómo puedo hacerlo? El archivo es un .mp3, pero me gustaría aprender a hacerlo para todos los tipos de archivo

Saludos!
__________________
:)
  #2 (permalink)  
Antiguo 03/07/2011, 07:05
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Forzar descarga de un archivo

Con javascript no es posible. Que sea un servidor compartido no debería afectarte. En servidores compartidos nunca tuve inconventientes usando php y este aporte:
http://ar.php.net/manual/es/function.header.php#48538
  #3 (permalink)  
Antiguo 03/07/2011, 07:25
 
Fecha de Ingreso: noviembre-2010
Mensajes: 1.242
Antigüedad: 13 años, 5 meses
Puntos: 73
Respuesta: Forzar descarga de un archivo

Ok, entonces dejo de buscar
__________________
:)
  #4 (permalink)  
Antiguo 03/07/2011, 07:36
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Forzar descarga de un archivo

El enlace que te brindó Panino5001 es bueno, aunque se puede mejorar usando la librería fileinfo y solo indicar aquello que no se pueda descargar.

Código PHP:
Ver original
  1. <?php
  2. function dl_file($file){
  3.  
  4.     //First, see if the file exists
  5.     if (!is_file($file)) { die("<b>404 File not found!</b>"); }
  6.  
  7.     //Gather relevent info about file
  8.     $len = filesize($file);
  9.     $filename = basename($file);
  10.     $finfo = finfo_open(FILEINFO_MIME_TYPE);
  11.     $realExtention = finfo_file($finfo, realpath($file));
  12.     finfo_close($finfo);
  13.  
  14.     //This will set the Content-Type to the appropriate setting for the file
  15.     switch( $realExtention ){
  16.         case 'text/x-php':
  17.         case 'text/html':
  18.         case 'application/x-empty':
  19.         case 'text/plain': die('error');
  20.     }
  21.  
  22.     //Begin writing headers
  23.     header("Pragma: public");
  24.     header("Expires: 0");
  25.     header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  26.     header("Cache-Control: public");
  27.     header("Content-Description: File Transfer");
  28.     header("Content-Type: $realExtention");
  29.  
  30.     //Force the download
  31.     header("Content-Disposition: attachment; filename=$filename;");
  32.     header("Content-Transfer-Encoding: binary");
  33.     header("Content-Length: ".$len);
  34.     @readfile($file);
  35.     exit;
  36. }
  37. dl_file('foo.png');
Algo así es que lo haría.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 03/07/2011 a las 08:05

Etiquetas: descarga
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:34.