PHP - Problema al descargar archivo mediante php

 
Vista:
sin imagen de perfil

Problema al descargar archivo mediante php

Publicado por Luis Felipe (14 intervenciones) el 14/05/2016 00:17:35
Hola buen día

Tengo problemas porque en mi pagina web subo unos archivos en formato pdf pero a la hora de la descarga me los descarga pero al abrirlos me dice "Se ha producido un error al cargar el documento PDF. cargar de nuevo".

Los archivos suben bien al servidor ya revise los archivos el problema es cuando lo descargo de la pagina parece que hay un error en el codigo o en el formato que los esta descargando aqui esta el codigo que tengo

1
echo "<td><a href='lista.php?id=$arreglo[5]&iddescargar=3'><img src='images/download.png' class='img-rounded'></td>"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
if(@$iddescargar==3){
	//Si la variable archivo que pasamos por URL no esta 
	//establecida acabamos la ejecucion del script.
	if (!isset($_GET['id']) || empty($_GET['id'])) {
		exit();
	}
 
	//Utilizamos basename por seguridad, devuelve el 
	//nombre del archivo eliminando cualquier ruta. 
	$archivo = basename($_GET['id']);
 
	$ruta = 'archivos/'.$archivo;
 
	if (is_file($ruta))
	{
		header('Content-Type: application/octet-stream');
		header('Content-Disposition: attachment; filename='.$archivo);
		header('Content-Transfer-Encoding: binary');
		header('Content-Length: '.filesize($ruta));
 
		readfile($ruta);
	}
	else
		exit();
 
}

no se que hacer si alguien tiene algun dato que me pueda ayudar para corregir este problema de ante mano muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema al descargar archivo mediante php

Publicado por xve (6935 intervenciones) el 14/05/2016 08:46:27
Hola Luis, no se si te coge correctamente el valor de la variable... puedes probar así:

echo "<td><a href='lista.php?id=".$arreglo[5]."&iddescargar=3'><img src='images/download.png' class='img-rounded'></td>"

el archivo que se descarga ocupa lo mismo que el original?

Puede ser que el content-type tenga que ser: application/pdf?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema al descargar archivo mediante php

Publicado por Luis Felipe (14 intervenciones) el 15/05/2016 02:53:23
Hola xve, gracias por tu aporte,

estaba revisando el código y cambie la variable sigue descargando con el mismo problema descarga un archivo con el mismo formato y el mismo peso, cuando lo abro desde la carpeta de descargas me sale el siguiente error en el adobe acrobat :

"Adobe Acrobat Reader DC no pudo abrir 'nombre del archivo.pdf' debido a que no es un tipo de archivo admitido o esta dañado (por ejemplo, se envió como adjunto de correo electrónico y no se descodifico correctamente'

tal vez esto pueda dar alguna pista de lo que esta sucediendo

Gracias de nuevo por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema al descargar archivo mediante php

Publicado por mauro (25 intervenciones) el 01/07/2016 21:30:19
Hola pudiste resolver el problema.....

Me sucede algo similar.... Tengo un archivo powerpoint en el servidor que puedo abrir sin problemas.
Pero cuando lo descargo a traves de la web tengo problemas al abrirlo.
Me arroja el sigueinte mensaje.

powerpoint encontro un problema con el contenido
powerpoint puede intentar reparar la presentacion
si confia en el origen de esta presentacion haga clic en reparar

Doy click y muestra el siguiente mesnaje

powerpoint no pudo leer algun contenido y tuvo que quitarlo

Doy aceptar y al final puedo ver la presentacion y aparentemente todo el contenido esta intacto....

esta es la funcion que uso para la descarga

1
2
3
4
5
6
7
8
9
10
11
12
private function downloadFile($dir,$file,$alias)
	{
		$path=$dir.$file;
		$name=$alias.".pptx";
	  	$size = filesize($path);
	    header("Content-Type: application/force-download");
	    header("Content-Disposition: attachment; filename='$name'");
	    header("Content-Transfer-Encoding: BINARY");
	    header("Content-Length: " . $size);
	    // Descargar archivo
	    readfile($path);
	}


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema al descargar archivo mediante php

Publicado por Luis Felipe (14 intervenciones) el 01/07/2016 21:43:11
Hola mauro,

te cuento que paso, al final de cuentas no conseguí encontrar una solución posible al problema a pesar de todos los intentos siempre me generaba el mismo error no se si sea algún error del servidor como tal y decidí hacerlo mas sencillo sin usar los header.

1
echo "<td><a href='administrador/archivos/$arreglo[5]' target='_blank'><img src='administrador/images/download.png' class='img-rounded'></td>";

si te das cuenta simplemente le doy la ruta donde se encuentran los archivos y en $arreglo[5] le mando el nombre del archivo ya al descargar el me lo abre en el navegador en una nueva ventana y de ahí lo puedo descargar.

espero te sirva mi ayuda y te de ideas de como solucionar el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar