Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error al descargar por PHP

Estas en el tema de Error al descargar por PHP en el foro de PHP en Foros del Web. Hola a todo el mundo.* He investigado pero no doy con el error, y es que cuando descargo un PDF por PHP me da error ...
  #1 (permalink)  
Antiguo 18/04/2016, 15:02
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Error al descargar por PHP

Hola a todo el mundo.*


He investigado pero no doy con el error, y es que cuando descargo un PDF por PHP me da error al momento de abrirlo, probe que no fuera el archivo y descargando otro pdf no deja, ahora intento con una imagen.

Creo que es el codigo, o puede ser otra opcion, Que opinan aqui el codigo.

Código PHP:
Ver original
  1. <?php
  2. $enlace = $_GET['id'];
  3. header ("Content-Disposition: attachment; filename=$enlace ");
  4. header ("Content-Type: application/force-download");
  5. header ("Content-Length: ".filesize($enlace));
  6. readfile($enlace);
  7. ?>
  #2 (permalink)  
Antiguo 18/04/2016, 16:09
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: Error al descargar por PHP

Y qué error te da?
  #3 (permalink)  
Antiguo 19/04/2016, 05:58
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error al descargar por PHP

Hola Muchas gracias por responder rodocoyote15, este es mi error al trata de abrir el archivo.
Código HTML:
Ver original
  1. Adobe Acrobat Reader DC no pudo abrir "NombreDelArchivo.pdf" debido a que no es un tipo de archivo admitido o esta dañado (por ejemplo, se envio como adjunto de correo electronico y no se descodifico correcamente

Eso con los PDF y con .DOCX

Código HTML:
Ver original
  1. Lo sentimos. No se puede abrir "Nombre del archivo.Docx" por que existe un problema con el contenido

Muchas gracias y que tengas buen dia!
  #4 (permalink)  
Antiguo 19/04/2016, 16:38
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Error al descargar por PHP

Hola amigo,
tu variable $enlace que trae?
Yo tengo un ejemplo muy parecido..
Sólo que proceso a $enlace, ya que yo obtengo toda la ruta del archivo
  #5 (permalink)  
Antiguo 19/04/2016, 17:59
Avatar de chulifo  
Fecha de Ingreso: abril-2009
Ubicación: perdido en codigos del PHP, pero aprendo rapido!
Mensajes: 524
Antigüedad: 15 años
Puntos: 18
Respuesta: Error al descargar por PHP

De seguro hay un error en el procesamiento. Elimina las cabeceras e imprime el $enlace. Prueba y cuenta a ver que error te da, antes de eso activa el error_reporting(E_ALL)
__________________
Solo soy un simple fanático que mata el tiempo de la mejor manera.
  #6 (permalink)  
Antiguo 20/04/2016, 08:31
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error al descargar por PHP

Hola Amigos Gracias por responder.

@german_1441: Mi variable enlace esta como la URL que llama a el archivo en mi HTML.

Código HTML:
Ver original
  1. <a href="DescargarMu.php?id='Manual del usuario.docx'">

@chulifo Error
Código HTML:
Ver original
  1. Notice: Undefined index: id in C:\xampp\htdocs\Mostrar menu\DescargarMu.php on line 2
  2.  
  3. Warning: readfile(): Filename cannot be empty in C:\xampp\htdocs\Mostrar menu\DescargarMu.php on line 6
  4. $enlace
  #7 (permalink)  
Antiguo 20/04/2016, 13:20
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Error al descargar por PHP

Prueba a pasar el parametro con urlencode

Ej:
Código PHP:
Ver original
  1. echo '<a href="DescargarMu.php?id='.urlencode("Manual del usuario.docx").'">';
__________________
>> Eleazan's Source
>> @Eleazan
  #8 (permalink)  
Antiguo 20/04/2016, 14:31
Avatar de chulifo  
Fecha de Ingreso: abril-2009
Ubicación: perdido en codigos del PHP, pero aprendo rapido!
Mensajes: 524
Antigüedad: 15 años
Puntos: 18
Respuesta: Error al descargar por PHP

Cita:
Iniciado por Skorge Ver Mensaje
Hola Amigos Gracias por responder.

@german_1441: Mi variable enlace esta como la URL que llama a el archivo en mi HTML.

Código HTML:
Ver original
  1. <a href="DescargarMu.php?id='Manual del usuario.docx'">

@chulifo Error
Código HTML:
Ver original
  1. Notice: Undefined index: id in C:\xampp\htdocs\Mostrar menu\DescargarMu.php on line 2
  2.  
  3. Warning: readfile(): Filename cannot be empty in C:\xampp\htdocs\Mostrar menu\DescargarMu.php on line 6
  4. $enlace
Muestra tu código, para poder ayudarte mas. Por lo que te dice ahi no esta recibiendo valor en $_GET['id'];
__________________
Solo soy un simple fanático que mata el tiempo de la mejor manera.
  #9 (permalink)  
Antiguo 20/04/2016, 15:07
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error al descargar por PHP

Hola Gracias por responder muchachos.

entonces el codigo va asi en PHP
Código PHP:
Ver original
  1. <?php
  2. $enlace = $_GET['id'];
  3. //header ("Content-Disposition: attachment; filename=$enlace ");
  4. //header ("Content-Type: application/force-download");
  5. //header ("Content-Length: ".filesize($enlace));
  6. readfile($enlace);
  7. echo '$enlace';
  8. ?>
Código HTML:
Ver original
  1. <a href="DescargarMu.php?id='Manual del usuario.docx'"><img alt="img0" src="imagenes/ISO_7010_M002-512.png" name="Manual del usuario" title="Manual del usuario" /></div></a>

El archivo lo tengo en la carpeta Raiz, y con todo tipo de documentos siempre dice que es un error de codificacion, o que fue mal adjuntado. Solo que en el Tutorial donde vi este codigo funcionaba, Sera que han des habilitado alguna función?

Que consejos me pueden brindar chicos o que puedo invesitgar para solucionar este choyo
  #10 (permalink)  
Antiguo 20/04/2016, 15:10
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error al descargar por PHP

Valla con el codigo de @Eleazan Pone en blanco todo y el equipo se recalienta o.O Wtf? Y da una interesante cadena de simbolos.
  #11 (permalink)  
Antiguo 20/04/2016, 16:11
Avatar de chulifo  
Fecha de Ingreso: abril-2009
Ubicación: perdido en codigos del PHP, pero aprendo rapido!
Mensajes: 524
Antigüedad: 15 años
Puntos: 18
Respuesta: Error al descargar por PHP

TuArchivo.php
Código PHP:
Ver original
  1. $file_url = $_GET['id'];
  2. header('Content-Type: application/octet-stream');
  3. header("Content-Transfer-Encoding: Binary");
  4. header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\"");
  5. readfile($file_url);

prueba asi y nos cuentas. Intentan pasando ?id=TuArchivo.php
__________________
Solo soy un simple fanático que mata el tiempo de la mejor manera.
  #12 (permalink)  
Antiguo 21/04/2016, 06:07
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error al descargar por PHP

Solucionado! Hombre chulifo Gracias por la ayuda! Espero poder ayudarte mas adelante, si era asi como has subido el codigo, pero no tienes la documentacion o algo para ver como funciona este cod y asi poder resolverlo masa futuro.


Muchas gracias de nuevo!
  #13 (permalink)  
Antiguo 21/04/2016, 06:49
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Error al descargar por PHP

Te comento el código del compañero para que entiendas lo que hace.

Código PHP:
Ver original
  1. // recupera la URL del archivo
  2. $file_url = $_GET['id'];
  3. // Esta cabecera fuerza la descarga
  4. header('Content-Type: application/octet-stream');
  5. // Esta cabecera indica que se va a enviar un archivo binario
  6. header("Content-Transfer-Encoding: Binary");
  7. // Esta cabecera establece el nombre que se va a dar al archivo
  8. header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\"");
  9. // readfile lee un archivo y lo escribe en el búfer de salida
  10. readfile($file_url);
  11.  
  12. // fin del cuento
__________________
Unset($vida['malRollo']);
  #14 (permalink)  
Antiguo 21/04/2016, 08:44
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Error al descargar por PHP

Hola amigo, otra solución podría ser limpiando el nombre de tu archivo..
por alguna razón a veces arroja un error cuando los nombres del archivo contienen espacios en blanco o incluso asentos ...
Saludos
  #15 (permalink)  
Antiguo 21/04/2016, 12:54
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error al descargar por PHP

Hola Chicos Gracias por seguir comentando!

@xerifandtomas
Exelente! ahora podre probarlo con otros archivos en un futuro y por que no trata de mejorarlo.

@german_1441
En parte tambien era eso, siempre veia que los archivos eran todo pegado y sin tildes ni nada, eso produce errores, Muchas gracias!
  #16 (permalink)  
Antiguo 21/04/2016, 16:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error al descargar por PHP

Yo hubiera abierto el archivo "descargado" con un editor de texto, sencillamente al haber un espacio o texto que no debería ir ahí se corrompe el archivo.

Es bastante común en PHP, digamos que es un error clásico cuando no se comprende cómo funciona HTTP y header() a propósito.

Que claro, si sólo muestras el "código php" podríamos pensar que no hay error ahí, ¿pero seguro ese es el 100% del código de tu script de descargas?

Si omites algo del código real no ayuda nada lo que muestres.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #17 (permalink)  
Antiguo 25/04/2016, 07:44
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error al descargar por PHP

Hola @pateketrueke Si era el 100% de mi Script de descarga y el 100% de la imagen que lo descarga, era un error de cifrado "al parecer" pero ya todo esta solucionado. Gracias por responder

Etiquetas: Ninguno
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 03:07.