Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] descarga archvos

Estas en el tema de descarga archvos en el foro de PHP en Foros del Web. Buenas gente. Pues eso, a ver si me podéis orientar sobre la descarga archivos desde la ruta. Es decir, como puedo descargar un archivo si ...
  #1 (permalink)  
Antiguo 25/04/2016, 02:27
 
Fecha de Ingreso: febrero-2016
Ubicación: Bilbao, BI, EUS
Mensajes: 74
Antigüedad: 8 años, 3 meses
Puntos: 0
descarga archvos

Buenas gente.

Pues eso, a ver si me podéis orientar sobre la descarga archivos desde la ruta. Es decir, como puedo descargar un archivo si en la base de datos solo he guardado la ruta del archivo en cuestión?

He probado con lo de forzar la descarga pero no me descarga bien.

Alguna orientación?

Código PHP:
Ver original
  1. <?php
  2.     require_once './conexion.php';
  3.    
  4.     mysql_connect($dbhost, $dbusername, $dbuserpass);
  5.     mysql_select_db($dbname) or die('Cannot select database');
  6.    
  7.     //file es el código de identificación del elemento a descargar.
  8.  
  9.     if(!isset($_GET['file']) || empty($_GET['file'])){
  10.         exit();
  11.     }
  12.    
  13.     $archivo= basename($_GET['file']);
  14.    
  15.     $consulta= mysql_query("SELECT * FROM tabla WHERE codigo= $archivo");
  16.     $data = mysql_fetch_array($consulta);
  17.     $ruta= $data['ruta'];
  18.     $nombre= $data['nombre'];
  19.    
  20.    
  21.     header('Content-Type: application/force-download');
  22.     header('Content-Disposition: attachment; filename='.$nombre);
  23.     header('Content-Transfer-Encoding: binary');
  24.     header('Content-Length: '.filesize($ruta));
  25.        
  26.     readfile($ruta);
  27.    
  28. ?>
  #2 (permalink)  
Antiguo 25/04/2016, 04:38
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: descarga archvos

Quizás este tema reciente te pueda servir.

Cuando dices
Cita:
He probado con lo de forzar la descarga pero no me descarga bien.
A que te refieres exactamente? Te da algún error en concreto?
__________________
Unset($vida['malRollo']);
  #3 (permalink)  
Antiguo 25/04/2016, 07:59
 
Fecha de Ingreso: febrero-2016
Ubicación: Bilbao, BI, EUS
Mensajes: 74
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: descarga archvos

Buenas,

Gracias por responder.

Pues error, no me da error ninguno pero no me descarga el archivo que quiero descargarme del servidor.

Me descarga el download.php que es el php que he enseñado en el anterior mensaje.

La llamada al download.php lo hago así:

Código PHP:
Ver original
  1. echo "<a href='http://www.localhost/mipagina/download.php?file=$codigo'>";
  #4 (permalink)  
Antiguo 25/04/2016, 08:59
 
Fecha de Ingreso: febrero-2016
Ubicación: Bilbao, BI, EUS
Mensajes: 74
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: descarga archvos

Cita:
Iniciado por xerifandtomas Ver Mensaje
Quizás este tema reciente te pueda servir.

Cuando dices


A que te refieres exactamente? Te da algún error en concreto?

Buenas,

Siguiendo los consejos del link que me has pasado he conseguido hacer la descarga correctamente pero otro problema:

Al intentar abrir el archivo descargado me da un error con este mensaje: "El archivo tiene un formato desconocido o esta dañado".

Y me he fijado que todos los archivos descargados ocupan 1kb cuando a la hora de subir ocupan mucho mas.
  #5 (permalink)  
Antiguo 25/04/2016, 09:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: descarga archvos

Cita:
Al intentar abrir el archivo descargado me da un error con este mensaje: "El archivo tiene un formato desconocido o esta dañado".
Abre el archivo con un editor de texto: sólo así verás el problema.

Cualquier salto de linea o impresión anterior o posterior a tu código de descarga puede corromper el archivo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 25/04/2016, 09:24
 
Fecha de Ingreso: febrero-2016
Ubicación: Bilbao, BI, EUS
Mensajes: 74
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: descarga archvos

Cita:
Iniciado por pateketrueke Ver Mensaje
Abre el archivo con un editor de texto: sólo así verás el problema.

Cualquier salto de linea o impresión anterior o posterior a tu código de descarga puede corromper el archivo.
Buenas,

Gracias por responder.

Perdón por mi novatada. No sabia que se podía hacer eso de abrir el archivo descargado en un editor de texto.

Bien una vez abierto el error que me indica es el siguiente:

"
Warning: readfile(../carpetaDestino/ElementoaDescargar.zip): failed to open stream: No such file or directory in C:\xampp\htdocs\miproyecto\download.php on line 11
"

Linea 11 que es el arriba indicado: readfile($file_url);

Modo desesperación en On.
  #7 (permalink)  
Antiguo 25/04/2016, 09:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: descarga archvos

Pues ahí tienes el error, la ruta que le das para leer el archivo no es la correcta, sólo eso.

Recuerda que las operaciones sobre rutas relativas de archivos (../../archivo) se resuelven en relación a la ubicación actual del script en ejecución.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 25/04/2016, 09:39
 
Fecha de Ingreso: febrero-2016
Ubicación: Bilbao, BI, EUS
Mensajes: 74
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: descarga archvos

Buenas,

Muchas gracias de veras por la respuesta. Ya lo he solucionado. El problema era ese, que el download.php no estaba a la altura que le correspondía.

Me habéis salvado la vida!!

Si algún día tengo el placer de conoceros, yo invito a las cervezas!!!
  #9 (permalink)  
Antiguo 25/04/2016, 10:03
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: descarga archvos

Mmm, he leído hablar de cerveza? Yo me apunto, Donde? Donde? Jajaja

Nada es broma.

Me alegro que lo hayas podido solucionar!
__________________
Unset($vida['malRollo']);

Etiquetas: mysql, select, tabla
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 21:42.